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 に答える