矢量列表

时间:2013-04-25 19:55:37

标签: c++ list object vector

我想弄清楚如何正确使用矢量列表。

我理解如何声明

list< vector<int> > variableName;

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

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

list< vector<ClassObject> > listOfVectorsOfClass;

任何人都可以帮助我吗?

3 个答案:

答案 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);
}