Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ C++;11:map::下限不';无法在Linux中对2个或更少的元素正常工作_C++_Linux_Gcc_C++11_Debian - Fatal编程技术网

C++ C++;11:map::下限不';无法在Linux中对2个或更少的元素正常工作

C++ C++;11:map::下限不';无法在Linux中对2个或更少的元素正常工作,c++,linux,gcc,c++11,debian,C++,Linux,Gcc,C++11,Debian,如果我在Linux中运行以下C++11示例(Debian7、GCC4.8.2、EclipseCDT),while循环是无限的。第一个循环是正确的。迭代器递减1,它引用第一个映射元素。但第二个循环和其他循环是不正确的。递减运算符不递减迭代器。它仍然引用第一个元素。 如果我删除注释(在映射初始化中),而循环将停止。 你能告诉我,我做错了什么吗? 非常感谢你的每一个评论 #include <iostream> #include <map> using namespace std

如果我在Linux中运行以下C++11示例(Debian7、GCC4.8.2、EclipseCDT),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;
}
#包括
#包括
使用名称空间std;
int main(){
map mymap={{1100},{2200}/*,{3300}/};
auto it=mymap.下限(2);
是否将
begin()
迭代器传递到此行:

while(--it != buff.end())

--begin()
会产生未定义的行为。

--begin()是未定义的行为。请阅读您为什么要尝试到达映射的末尾(),以减少while循环中的迭代器?这样会发现一些错误