3

我试图弄清楚如何正确使用向量列表。

我明白如何申报

list< vector<int> > variableName;

但我不知道如何实际设置任何内容或从中提取任何信息。

更具体地说,我正在尝试制作一个对象向量列表,并且我希望能够从中设置和提取信息。

list< vector<ClassObject> > listOfVectorsOfClass;

谁能帮我吗?

4

3 回答 3

4

您可以通过以下方式访问信息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

于 2013-04-25T20:03:38.017 回答
3

你要样品吗?!

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;
}
于 2013-04-25T20:03:37.760 回答
2
#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);
}
于 2013-04-25T20:20:45.590 回答