2013-02-20 94 views
2

您好,我需要向量(或其他類似的數據結構)填充託管對象。帶有託管對象的C++向量

通常我可以這樣寫:

std::vector<Object> vect; 

但我不能使用:

std::vector<Object^> vect; 

有人能解釋一下,如何改變聲明或建議其他結構,而不是載體。謝謝。

+0

你背後的意圖是什麼?你使用C++/CLI嗎?或者說WinRT? – 2013-02-20 13:58:48

+1

使用.NET通用List類:http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx – 2013-02-20 14:00:17

+0

@AlexFarber這是關於C++,而不是C#。 – 2013-02-20 14:07:30

回答

3

使用.NET泛型列表類:來自於同一網頁http://msdn.microsoft.com/en-us/library/6sh2ey19.aspx

名單列舉的樣品,由user1237747的評論要求:

#include "stdafx.h" 
using namespace System; 
using namespace System::Collections::Generic; 

int main(array<System::String ^> ^args) 
{ 
    List<String^>^ dinosaurs = gcnew List<String^>(); 

    dinosaurs->Add("Tyrannosaurus"); 
    dinosaurs->Add("Amargasaurus"); 

    for each(String^ dinosaur in dinosaurs) 
    { 
     Console::WriteLine(dinosaur); 
    } 

    return 0; 
} 

替換字符串^與你所需要的類型。您還可以使用[]運算符按索引訪問List元素。

通常,避免混合託管和非託管類型,如果這不是絕對必要的話。

+0

該類型可以是一個值類嗎?如果是的話,List可以聲明爲List ^myList;'? – 2017-02-11 17:48:19

2

是的,有管理類型的stl數據結構。以下是使用矢量的示例(根據您的請求)。

#include <cliext/vector> 

cliext::vector<Object^> vect;