Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/146.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反向迭代器和下界_C++_C++11_Reverse Iterator - Fatal编程技术网

C++ c++;11反向迭代器和下界

C++ c++;11反向迭代器和下界,c++,c++11,reverse-iterator,C++,C++11,Reverse Iterator,我有以下示例程序: #include <iostream> #include <string> #include <map> int main() { std::map<int, int> a; a[8] = 1; a[5] = 1; a[1] = 1; a[2] = 1; std::cout << a.begin()->first << std::endl; std::cout &l

我有以下示例程序:

#include <iostream>
#include <string>
#include <map>

int main()
{
  std::map<int, int> a;
  a[8] = 1;
  a[5] = 1;
  a[1] = 1;
  a[2] = 1;

  std::cout << a.begin()->first << std::endl;

  std::cout << a.rbegin()->first << std::endl;
  std::cout << (++a.rbegin())->first << std::endl;
  std::cout << (--a.rbegin())->first << std::endl;

  std::cout << (a.lower_bound(6))->first << std::endl;
}
我有两个问题。第一个是为什么
++a.rbegin()
--a.rbegin()
在同一个方向上迭代?从
a.rbegin()
返回的迭代器不是双向迭代器吗

第二个问题是为什么
a.lower_bound(6)->first
返回8而不是5?基于,它应该向第一个元素“不小于key”返回迭代器。所以我原以为5会从8>6返回。

-a.rbegin()是UB

下限(val)
返回一个迭代器,该迭代器指向范围中的第一个元素,该元素的比较值不小于
val
5
不是“不小于
6
”,因此您可以将迭代器正确地设置为
8
--a。rbegin()是UB


下限(val)
返回一个迭代器,该迭代器指向范围中的第一个元素,该元素的比较值不小于
val
5
不是“不小于
6
”,因此您可以将迭代器正确地设置为
8
——a.rbegin()显示未定义的行为。
--a.rbegin()
是未定义的行为。“不小于key”表示“等于或大于”,因此8是第一个适合的。5比1小。据我所知,对开始的迭代进行递减是未定义的行为。
下限
返回第一个元素>=您正在搜索的元素。对于第二个问题,它返回“不小于键”。5不小于6?
--a.rbegin()
表现出未定义的行为。
--a.rbegin()
是未定义的行为。“不小于键”表示“等于或大于”,因此8是第一个适合的。5比1小。据我所知,对开始的迭代进行递减是未定义的行为。
下限
返回第一个元素>=您正在搜索的元素。对于第二个问题,它返回“不小于键”。5不少于6吗?
1
8
5
5
8