我有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}}。
答案 0 :(得分:0)
k
的初始值不在最后:使用
for(auto k=v.size(); k--;)
向后循环。
使用at(i-1)
也必须是错误的,因为i
从0开始。
除非您的矢量已排序,否则仅检查两个元素无法告诉您它们是否全部相等。
最后,即使你不能使用range-for(因为索引使用像i-1
和...+j
),也要绑定对你正在处理的元素的引用,至少在外层。可读性的提高非常重要。