完全iterator(std :: map)如何在C++中工作?

Jav*_*ner 1 c++ dictionary iterator std

我试着运行以下代码:

std::map < std::string, std::string > m;
m[ "one" ] = "0";
m[ "two" ] = "1";
m[ "three" ] = "2";
m[ "four" ] = "3";

auto it = m.begin();
std::cout << it->first << "\n";
Run Code Online (Sandbox Code Playgroud)

输出是:"four".但为什么从头到尾呢?我被期待了"one"!

Edg*_*jān 5

原因是std :: map是一个已排序的容器.它根据键来对其元素进行排序,这些键是键值对,在特定情况下是std :: string.

然后,字符串按字典顺序相互比较.由于字符串four是所有字符串中最小的字符串,因此该对("4","3")成为第一对.因此begin()返回指向此对的迭代器.