我想弄清楚如何正确使用矢量列表。
我理解如何声明
list< vector<int> > variableName;
但我不知道如何实际设置任何内容或从中提取任何信息。
更具体地说,我正在尝试制作一个对象向量列表,我希望能够从中设置和提取信息。
list< vector<ClassObject> > listOfVectorsOfClass;
任何人都可以帮助我吗?
答案 0 :(得分:3)
您可以使用iterators
list< vector<ClassObject> >::iterator list_it;
vector<ClassObject>::iterator vec_it;
for (list_it = listOfVectorOfClass.begin(); list_it != listOfVectorOfClass.end();
++ list_it)
{
for (vec_it = list_it->begin(); vec_it != list_it->end(); ++ vec_it)
{
//do something with vec_it
//for example call member function of Class
(*vec_it).print();
}
}//can use const_iterator depends on what you will do on class objects
与访问int
的矢量列表相同。
答案 1 :(得分:2)
你想要样品吗?!
list< vector<int> > variableName;
variableName.push_back({1, 2, 3});
variableName.push_back({4, 2, 6});
for (auto &v : variableName)
{
for (auto &x : v)
cout << x << " ";
cout << endl;
}
答案 2 :(得分:0)
#include <cstdio>
#include <list>
#include <vector>
#include <iterator>
int main(){
std::list< std::vector<int> > li;
li.push_back(std::vector<int>());
li.push_back(std::vector<int>());
std::vector<int> v3(3);
v3.push_back(1);
v3.push_back(2);
v3.push_back(3);
li.push_back(v3);
for (std::list<std::vector<int> >::iterator it1 = li.begin(); it1 != li.end(); ++it1){
std::vector<int>::iterator it2;
for (it2 = (*it1).begin(); it2 != (*it1).end(); ++ it2){
std::printf("element: %d\n",(*it2));
}
}
return OK;
}
如果您熟悉新的 C ++ 11 语法,那么它可能会更简单:
std::list< std::vector<int> > li;
li.push_back({1, 2, 3});//push_back vector
li.push_back({4, 5, 6});//again, vector implicitly
for (auto &v : li)
{
//even better auto const since we need read only access to elements
for (auto const &i : v)
std::printf("element: %d\n",i);
}