我有一个嵌套模板参数,形式为
vector<list<int, string> >
.
也就是说,它是一个包含整数值和字符串单词的链表向量。如果这不是有效的表格,请告诉我。我的问题是打电话给它。如果'table'属于上述数据类型,是否可以将索引称为例如table[0]?如果是这样,我如何开始遍历该索引中的链表?
我有一个嵌套模板参数,形式为
vector<list<int, string> >
.
也就是说,它是一个包含整数值和字符串单词的链表向量。如果这不是有效的表格,请告诉我。我的问题是打电话给它。如果'table'属于上述数据类型,是否可以将索引称为例如table[0]?如果是这样,我如何开始遍历该索引中的链表?
使用您定义的嵌套数据结构,您可以完全正确地调用您提到的索引,table[0]
. 您可以准确地执行列表操作。为了使您的代码更干净,执行以下操作可能会有所帮助:
list<string> listInVector = table[i];
因此,您不会对对 in 中的索引执行操作感到困惑table
,而是可以使用该标识符使代码更干净。
容器中的元素是单独的元素。如果您想拥有多个元素,例如 anint
和 astd::string
您需要将它们放入合适的结构中,例如放入 a 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";
}
“如果这不是有效的表格,请告诉我”
是的,它无效,我认为您的意思是:-
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;