-4

全て

データを格納するために C++ STL でベクトルを使用しています。私はそれらを関数に渡し、関数から返します。ただし、データサイズが大きくなるにつれて、プログラムはますます遅くなります。したがって、コードを「反復子バージョン」に更新しています。

私がアーカイブしたいのは、反復子を使用して STL ベクトルを渡し、返し、反復することです。

配列を操作するのと同じように、1次元ベクトルを使用した操作で問題ありません。しかし、2 次元ベクトルとなると、ちょっと混乱します。

STL iterator を使用して2Dベクトルを反復する方法の簡単なコード例を誰かに見せてもらえますか?

よろしくお願いします。

よろしく

長いです

4

3 に答える 3

1

まあ、それはすでにstackoverflowのどこかにあります

ただし、ここで検索したくない場合は、次のとおりです。

std::vector<std::vector<int> >  vec{ {1,2,3},{4,5,6}};

//Simplest Way:- (C++11)

for(auto row:vec)
{
  for(auto col:row)
   std::cout<<col<< " ";
  std::cout<<std::endl;
}

//OR Using iterator
std::vector<std::vector<int> >::iterator r;
std::vector<int>::iterator c;
for (r = vec.begin(); r != vec.end(); r++) {
    for (c = r->begin(); c != r->end(); c++) {
        std::cout<<*c<< " ";
    }
    std::cout<<std::endl;
}

同じコンテナーの 2 つのイテレーター間の距離のみを取得できます

std::vector<int>::iterator s = v2.begin(); //Can be any start
std::vector<int>::iterator e = v2.end(); // Can be any end

std::cout<<"Distance :"<<std::distance(s,e)<<std::endl;
于 2013-08-02T09:23:20.150 に答える