如何制作std ::数组列表?

时间:2010-06-22 21:26:41

标签: c++ list std

我想创建一个std ::数组列表。具体来说,我想要一个Borland Code Builders AnsiStrings数组列表。

真正的踢球者是我希望动态分配数组。如何定义列表?我在这里迷路了,我不知道是不是要开始。

std::list<???> myList;

我在尖括号里面放了什么?我尝试过的任何东西都无济于事

4 个答案:

答案 0 :(得分:6)

typedef std::vector<char> char_array;
typedef std::list<char_array> char_array_list;

或更恰当地说:

typedef std::list<std::string> string_list;

答案 1 :(得分:2)

std::list<std::vector<char>> myList;

std::vector<>是正确处理动态数组的c ++方法。您很少需要直接使用new T[42]来创建数组。

std::vector<char> vc;
char ansi_str[] = &vc[0];
上面代码中的

ansi_str由C ++ 03标准定义为数组中第一个元素的地址(在C ++ 98中,它允许返回代理)。

如果您真的想将AnsiStrings用作字符串,最好使用std::string代替std::vector<char>。然后,您将免费获得所有C ++不错的字符串功能,您仍然可以使用std::string::data()访问原始数据。使用std::string的一个缺点是原始数据无法修改。如果您的AnsiStrings api需要修改数据,您将被std::vector阻止。

答案 2 :(得分:1)

不要将其列为数组列表,请使用std::vector。那么它将是std::list<std::vector<AnsiString> >。您可以使用resizepush_back向矢量添加字符串。

答案 3 :(得分:0)

为什么不改为std :: list of std :: strings?

但是,你为什么要使用ansi字符串? Ansi字符串被认为是“文本犯罪”。