对于我的程序,我需要有无序键。为了完成工作,我使用 std::unordered_map 容器。这是一个测试代码:
#include <iostream>
#include <unordered_map>
#include <string>
int main()
{
std::unordered_map<std::string, int> toto;
toto["Outlook"] = 454;
toto["Temperature"] = 4;
toto["Humidity"] = 554;
toto["Wind"] = 545454;
std::unordered_map<std::string, int>::iterator It = toto.begin();
std::cout << toto.size() << std::endl;
for (; It != toto.end(); ++It)
std::cout << (*It).first << std::endl;
getchar();
return (0);
}
在 Windows(Visual Studio 2012)上,输出为:
Outlook
Temperature
Humidity
Wind
这是正确的。未应用任何排序。
但在 Linux 上,输出如下:
Humidity
Outlook
Wind
Temperature
PS:在 linux 上,我使用 -std::c++0x 和 -std=gnu++0x 编译我的程序,并且没有编译错误。
那么,同一个程序怎么可能有不同的行为呢?在此先感谢您的帮助 !