C :通过一组向量的向量进行迭代

C++ : iterate through a vector of set of vectors

本文关键字:向量 一组 迭代      更新时间:2023-10-16

我想要这样的东西:

{ {0,1},{0,2},{0,3},{0,4}...... {255,255} }  ---> (1)

经过一些处理后,我必须得到这样的东西:

 { {0,1},{0,2},{0,3} }
 { {0,4} }
 { {5,6},{255,255} }

因此,最初一组由许多子集组成。每个子集由两个值组成。处理(1)中的一个大集合之后,像上述分解。

现在,我想迭代(1)中的集合,并从每个子集中获取每个子集的每个值。

这是我的代码。请指导我如何提取子集值。

crtbestPartitionDouble 对应于由子集组成的大型集。子组是一个由两个元素组成的子集双组是所有子集的集合

    vector<set<vector<int> > > CrtBestPartitionDouble;
vector<set<vector<int> > > ::iterator itr;
set<vector<int> > doublegroup;
set<vector<int> >::iterator itr2;
    vector<int>::iterator itr3 ;
      for(int k=0; k <5; k++)
       {
        for(int j=0; j <5; j++)
           {       vector<int> subgroup;
            subgroup.push_back(k);
            subgroup.push_back(j);
            doublegroup.insert(subgroup);
        }

    }
    CrtBestPartitionDouble.push_back(doublegroup);
for ( itr = CrtBestPartitionDouble.begin(); itr != CrtBestPartitionDouble.end(); ++itr ) {
        // Iterate each set
        for ( itr2 = itr->begin(); itr2 != itr->end(); ++itr2 ) {
            // Iterate each subset
            for (  itr3 = itr2->begin(); itr3 != itr2->end(); ++itr3 ) {
                std::cout << *itr3;
            }
        }
    }

它给我以下错误:

ST.cpp: In function ‘void StateTableGenerator()’:
ST.cpp:460:39: error: no match for ‘operator=’ in ‘itr3 = itr2.

您可以使用此代码在所有值上迭代,我不确定这是否是您想要的

   typedef vector<set<set<int> > > CrtBestPartitionDoubleType;
    CrtBestPartitionDoubleType CrtBestPartitionDouble;
    // Iterate each vector element
    for ( CrtBestPartitionDoubleType::iterator itr = CrtBestPartitionDouble.begin(); itr != CrtBestPartitionDouble.end(); ++itr ) {
        // Iterate each set
        for ( set<set<int> >::iterator itr2 = itr->begin(); itr2 != itr->end(); ++itr2 ) {
            // Iterate each subset
            for ( set<int>::iterator itr3 = itr2->begin(); itr3 != itr2->end(); ++itr3 ) {
                std::cout << *itr3;
            }
        }
    }

,范围为:

for(const auto& a: CrtBestPartitionDouble))
{
  for(const auto& b: a)
  {
    for(const auto& c: b)
      std::cout << c;
  {
}