C ++链接列表的向量

时间:2013-10-12 19:04:57

标签: c++

我有

形式的嵌套模板参数

vector<list<int, string> >

也就是说,它是一个包含整数值和字符串单词的链表的向量。如果这不是有效表格,请告诉我。我的问题在于调用它。如果'table'是上述数据类型,可以调用索引,例如table [0]吗?如果是这样,我该如何开始遍历该索引中的链接列表?

3 个答案:

答案 0 :(得分:0)

使用您定义的嵌套数据结构,调用您提到的索引table[0]完全正确。您可以完全执行列表操作。为了使您的代码更加干净,执行以下操作会很有帮助:

list<string> listInVector = table[i];

因此,您不会对table中的索引执行操作感到困惑,而是可以使用该标识符使代码更加干净。

答案 1 :(得分:0)

容器中的元素是单个元素。如果您想拥有多个元素,例如intstd::string,则需要将它们放入合适的结构中,例如放入std::pair<int, std::string>

std::vector<std::list<std::pair<int, std::string>>> table;

将列表中的元素移动到您可以使用的特定位置,例如:

std::list<std::pair<int, std::strin>>::iterator it(table[i].begin()), end(table[i].end());
for (; it != end; ++it) {
    std::cout << "int=" << it->first << " string=" << it->second << "\n";
} 

答案 2 :(得分:0)

“如果这不是有效表格,请告诉我”

是的,它无效,我想你的意思是: -

std::vector< std::list<std::pair<std::string, int> > > table ;

如何访问?

类似的东西: -

typedef std::pair<std::string , int> ele;
std::list<ele>::iterator it = table[i].begin(); //for ith table

for(;it!=table[i].end();++it)
 std::cout<<it->first<<" "<<it->second;