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
是vectors
.
解决方案
的初始值k
结束:使用
for(auto k=v.size(); k--;)
向后循环。
的使用at(i-1)
也必须是错误的,因为i
从 0 开始。
除非您的向量已排序,否则仅检查两个元素并不能告诉您它们是否都相等。
最后,即使你不能使用 range-for(因为索引使用 like i-1
and ...+j
),也要绑定对你正在处理的元素的引用,至少在外部级别。可读性的改进是显着的。
推荐阅读
- three.js - 3D rendering a 2D cylinder in blender or three.js?
- python - TemplateSyntaxError: expected token 'end of statement block', got '-'
- mysql - 在 MySQL 中创建存储过程的问题
- api - 从维基百科/维基数据/链接数据中获取已消除歧义的同音词列表
- javascript - 从具有日期对象的对象数组中获取具有最旧日期的最新对象
- rust - 如何将数据移动到多个 Rust 闭包中?
- windows - CD 奇怪的行为
- android - 在后台线程的磁盘上滑动缓存图像
- matlab - Matlab中带有移动平均线的蜡烛图
- meteor - 如何估算 MeteorJS 应用程序的托管成本 (AWS)?