我对C ++很陌生,但熟悉其他一些语言。 我想使用类似于Java ArrayList,Objective-c NSMutableArray或Python数组的数据类型,但是在C ++中。我正在寻找的特性是可以在没有容量的情况下初始化数组(因此能够逐渐添加项目),以及在一个数组中存储多个数据类型的能力。
为了详细说明我想要的是从mysql数据库的不同表读取数据,而不知道表中字段的数量,并能够移动这些数据。我理想的数据类型允许我存储这样的东西:
idealArray = [Bool error,[string array],[string array]];
其中字符串数组可能有不同的大小,大小从1到20(相对较小)。
我不知道这是否可以用C ++,任何帮助表示,或链接到良好的资源。
由于
答案 0 :(得分:2)
C ++中标准动态大小的数组是std :: vector<&gt ;.除非你引入间接,否则不存在同类容器,为此你可以根据需要使用boost :: variant或boost :: any。
答案 1 :(得分:1)
您可以尝试使用std::vector<boost::any>
(文档here)。
答案 2 :(得分:1)
您可以使用结构或类来存储(命名)多种数据类型,例如:
class Record
{
bool _error;
vector<string> _v1;
vector<string> _v2;
};
vector<Record> vec;
或std :: tuple存储(未命名)多种数据类型,例如
vector<tuple<bool, vector<string>, vector<string> > > vec;
答案 3 :(得分:1)
我建议使用STL中的std :: vector。但请注意,C ++没有可以包含多种数据类型的容器。有多种方法可以模拟这种行为:
std::vector<Base_type*>
中,但是如果“类型”完全不同,则需要知道哪个项目在哪里以及类型为(动态)投射到哪里。std::vector<boost::any>
之类的东西(但注意到你是C ++的新手,这可能有些过分)。事实上,您需要问的问题是,您为什么要首先将不相关的“类型”存储在“数组”中?如果他们有关系,那么“怎么样”?这将指导您为“类型”设计一个像样的“Base_type”。
最后,简而言之,C ++没有可以包含不相关数据类型的同类数组结构。