你好,我需要一个充满托管对象的 vector (或其他类似的数据结构)。
通常我可以写:
std::vector<Object> vect;
但我不能使用:
std::vector<Object^> vect;
有人可以解释一下,如何更改声明或建议其他结构而不是 vector 。谢谢。
最佳答案
使用 .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;
}
将 String^ 替换为您需要的类型。您还可以使用 [] 运算符按索引访问列表元素。
通常,如果不是绝对必要的话,避免混合托管和非托管类型。
关于带有托管对象的 C++ vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14981633/