如何查看向量中的所有元素是否相同?

时间:2018-05-26 02:05:26

标签: c++

我有vector vectors

我如何检查其中一列中的所有元素是否相同?

我试图用这个嵌套的for循环检查它,但我得到超出范围错误

void move_bee(vector< vector<insect> > &insects_on_board){
   for(int i = 0; i < 10; i++){
      for(int j = 0; j < insects_on_board.at(i).size(); j++){
         for(int k = insects_on_board.at(i).size(); k > 0; k--){
            if(insects_on_board.at(i).at(j) == "B" &&
               insects_on_board.at(i).at(k) == "B"){
                 insects_on_board.at(i-1).push_back(bee());
                 insects_on_board.at(i).erase(insects_on_board.at(i).begin() + j);
            }
         }
      }
   }
}

我已经读过:

if (equal(myVector.begin() + 1, myVector.end(), myVector.begin()) )

方法,但它不会为我编译,我假设它,因为它是vector的{​​{1}}。

1 个答案:

答案 0 :(得分:0)

k的初始值不在最后:使用

for(auto k=v.size(); k--;)

向后循环。

使用at(i-1)也必须是错误的,因为i从0开始。

除非您的矢量已排序,否则仅检查两个元素无法告诉您它们是否全部相等。

最后,即使你不能使用range-for(因为索引使用像i-1...+j),也要绑定对你正在处理的元素的引用,至少在外层。可读性的提高非常重要。