我有一个数组:
const string ARRAY[][3] = {
{"Kolkata","Mumbai","218"},
{"Kolkata","New Delhi","316"},
...
{"Mumbai","Chennai","715"},
{"Chennai","Bangalore","516"},
};
这是一种存储整个表的便捷方式,因为我知道我有多少行。但是,将来需要从文件中读取数据,任何人都可以编辑该文件。
我想过创建一个结构,比如:
typedef struct row {
string col1;
string col2;
string col3;
} row_t;
然后创建vector<row_t>
。这是一个好主意吗?使用stl容器有更简单的方法吗?我还想过创建一个足够大的表来持续一段时间(行数经常不会改变),但这感觉不对..
谢谢!
答案 0 :(得分:2)
最直接的转换是在结构中使用数组:
struct row {
std::string data[3];
};
std::vector<row> v;
或者您可以使用std::
/ std::tr1::
/ boost::
array
类模板:
std::vector<std::array<std::string, 3> > v;
如果您要为每个元素使用单独的数据成员,正如您在示例中所示,您应该为它们指定有用的名称,而不只是将它们命名为“col#”。
答案 1 :(得分:1)
这是一个非常好的主意。您只需提供一个运营商&gt;&gt;从文件中读取,你就完成了。但是,我真的不明白你在那里遇到的typedef struct {} - C ++从来没有要求过。
答案 2 :(得分:0)
这种方法很好,假设列数永远不会改变。您可以创建向量向量,或修改结构以包含向量。
答案 3 :(得分:0)
你很可能会逃避聚合载体。
vector < vector < string > > Array;
然后,您可以根据需要调整行/列的大小。如果结构对于您来说更方便,因为每行的条目数量固定,您可以轻松使用您的建议。
vector < row_t > Array;