我想创建一个std ::数组列表。具体来说,我想要一个Borland Code Builders AnsiStrings数组列表。
真正的踢球者是我希望动态分配数组。如何定义列表?我在这里迷路了,我不知道是不是要开始。
std::list<???> myList;
我在尖括号里面放了什么?我尝试过的任何东西都无济于事
答案 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> >
。您可以使用resize
或push_back
向矢量添加字符串。
答案 3 :(得分:0)
为什么不改为std :: list of std :: strings?
但是,你为什么要使用ansi字符串? Ansi字符串被认为是“文本犯罪”。