C++11 : map::lower_bound 在 Linux 中无法正常工作 2 个或更少的元素
C++11 : map::lower_bound doesn't work correctly for 2 or less elements in Linux
如果我在Linux(Debian 7,GCC 4.8.2,Eclipse CDT)中运行以下C++11示例,则while循环是无限的。第一个循环是正确的。迭代器递减 1,并引用第一个映射元素。但是第二个和其他循环是不正确的。递减运算符不会递减迭代器。它仍然引用第一个元素。如果我删除注释(在地图初始化中),而循环将停止。你能告诉我,我做错了什么吗?非常感谢您的每条评论。
#include <iostream>
#include <map>
using namespace std;
int main() {
std::map<int, int> mymap = {{1, 100}, {2, 200}/*, {3, 300}*/};
auto it = mymap.lower_bound(2);
cout << "mymap key: " << it->first << endl;
while(--it != buff.end())
cout << "mymap key: " << it->first << endl;
return 0;
}
注意:此代码在Windows平台(Visual Studio 2013 Express)下工作正常。
您将begin()
迭代器传递给以下行:
while(--it != buff.end())
--begin()
会产生未定义的行为。
相关文章:
- Mongodb c++驱动程序:如何查询元素的数组
- QSqlquery prepare()和bindvalue()不工作
- 将数组作为参数传递给函数安全吗?作为第三方职能部门,可以探索他们想要的之外的其他元素
- 使用strcpy将char数组的元素复制到另一个数组
- 在为工作线程访问 lambda 中捕获的向量列表中的元素引用时,是否需要互斥锁?
- 试图使模板用于C 中结构的元素工作
- 为什么 vector::erase 不能在带有 const 的类元素上工作
- 我用于汇总数组元素的 c++ 代码无法正常工作
- C++二进制搜索无法正常工作-查找不在数组中的元素
- 排序C++,第一个元素不工作
- 难以理解某个函数的元素是如何工作的
- 多集是如何工作的,以及如何在多集中找到最小元素
- 如果元素不能为代码工作
- 自定义分配器- Microsoft std::map实现对相同的元素进行两次重新分配,GCC工作得很好
- 使用Qt,其中工作线程创建新的GUI元素
- 矢量中的移动元素没有按预期工作
- 快速排序不能在10k个元素下工作
- C++11 : map::lower_bound 在 Linux 中无法正常工作 2 个或更少的元素
- 这种从堆栈中删除元素的方法是如何工作的
- 向量在将其元素的引用推回到自身时是如何工作的