4

您好,我需要用托管对象填充向量(或其他一些类似的数据结构)。

通常我可以写:

std::vector<Object> vect;

但我不能使用:

std::vector<Object^> vect;

有人可以解释一下,如何更改声明或建议其他结构而不是向量。谢谢。

4

2 回答 2

4

使用 .NET 通用列表类:http: //msdn.microsoft.com/en-us/library/6sh2ey19.aspx

根据 user1237747 的评论要求,列出来自同一 WEB 页面的枚举示例:

#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^ 替换为您需要的类型。您还可以使用 [] 运算符按索引访问 List 元素。

通常,如果不是绝对必要的话,请避免混合托管类型和非托管类型。

于 2013-02-20T15:50:31.913 回答
4

是的,托管类型有 stl 数据结构。下面是一个使用向量的示例(根据您的要求)。

#include <cliext/vector>

cliext::vector<Object^> vect;

此向量类型的文档在这里

于 2017-02-20T18:04:08.110 回答