std::tr1::unordered_map<std::wstring,std::wstring> dict;
dict.insert(std::make_pair(L"DbServer",strDbServer));
dict.insert(std::make_pair(L"DbName",strDbName));
dict.insert(std::make_pair(L"DbPort",strDbPort));
dict.insert(std::make_pair(L"DbUserName",strDbUserName));
dict.insert(std::make_pair(L"DbPassword",strDbPassword));
执行完了以后,dict的元素如下:
[0]: ("DbServer","localhost")
[1]: ("DbName","test")
[2]: ("DbUserName","root")
[3]: ("DbPort","3306")
[4]: ("DbPassword","11111111")
为什么第三个和第四个元素的顺序颠倒了那?
请指教,谢谢。
13 个解决方案
#1
unordered_map
#2
unordered map不自动排序,不是应该按照插入的顺序存吗?
#3
为什么要按照插入顺序排, 如果是,那不就是ordered_map了么,一般实现就是hash表,顺序的话不就毫无意义了么
#4
unordered map是hash表。不是排序的。只有map是排序的。
#5
map排序是按照键的字母顺序排序,unordered map是胡乱排序。
我就想让它按照我插入的顺序排序,怎么就那么难啊。
#6
链表,数组啊,在尾部插入数据不就行了么
#7
unordered map是hash表。不是排序的。只有map是排序的。
map排序是按照键的字母顺序排序,unordered map是胡乱排序。
我就想让它按照我插入的顺序排序,怎么就那么难啊。
你要按插入顺序就需要用vector等
#8
是啊,在尾部追加内容用list或者vector多方便
#9
list和vector插入的不是键值对,是一个对象,要构造对象然后才能插入,遍历时还要一个个还原,好麻烦。
c#中有个Dictionary<T,T>就是按照插入顺序存储的,c++没有对应的集合吗?
c#中有个Dictionary<T,T>就是按照插入顺序存储的,c++没有对应的集合吗?
#10
map不就是按照你插入顺序存储的么?
#11
map<const char*,int> m;
m.insert(make_pair("a",1));
m.insert(make_pair("b",2));
m.insert(make_pair("c",3));
m.insert(make_pair("d",4));
map<const char*,int>::reverse_iterator it;
it=m.rbegin();
while(it!=m.rend()){
cout << it->first<<";"<<it->second<<endl;
++it;
}
#12
map<const char*,int> m;
m.insert(make_pair("a",1));
m.insert(make_pair("b",2));
m.insert(make_pair("c",3));
m.insert(make_pair("d",4));
map<const char*,int>::reverse_iterator it;
it=m.rbegin();
while(it!=m.rend()){
cout << it->first<<";"<<it->second<<endl;
++it;
}
map是根据less<T>的顺序。
#13
list和vector插入的不是键值对,是一个对象,要构造对象然后才能插入,遍历时还要一个个还原,好麻烦。
c#中有个Dictionary<T,T>就是按照插入顺序存储的,c++没有对应的集合吗?
vector<std::pair<> > ;
不就行了么,不需要还原啊。
#1
unordered_map
#2
unordered_map
unordered map不自动排序,不是应该按照插入的顺序存吗?
#3
为什么要按照插入顺序排, 如果是,那不就是ordered_map了么,一般实现就是hash表,顺序的话不就毫无意义了么
#4
unordered map是hash表。不是排序的。只有map是排序的。
#5
unordered map是hash表。不是排序的。只有map是排序的。
map排序是按照键的字母顺序排序,unordered map是胡乱排序。
我就想让它按照我插入的顺序排序,怎么就那么难啊。
#6
unordered map是hash表。不是排序的。只有map是排序的。
map排序是按照键的字母顺序排序,unordered map是胡乱排序。
我就想让它按照我插入的顺序排序,怎么就那么难啊。
链表,数组啊,在尾部插入数据不就行了么
#7
unordered map是hash表。不是排序的。只有map是排序的。
map排序是按照键的字母顺序排序,unordered map是胡乱排序。
我就想让它按照我插入的顺序排序,怎么就那么难啊。
你要按插入顺序就需要用vector等
#8
是啊,在尾部追加内容用list或者vector多方便
#9
list和vector插入的不是键值对,是一个对象,要构造对象然后才能插入,遍历时还要一个个还原,好麻烦。
c#中有个Dictionary<T,T>就是按照插入顺序存储的,c++没有对应的集合吗?
c#中有个Dictionary<T,T>就是按照插入顺序存储的,c++没有对应的集合吗?
#10
map不就是按照你插入顺序存储的么?
#11
map<const char*,int> m;
m.insert(make_pair("a",1));
m.insert(make_pair("b",2));
m.insert(make_pair("c",3));
m.insert(make_pair("d",4));
map<const char*,int>::reverse_iterator it;
it=m.rbegin();
while(it!=m.rend()){
cout << it->first<<";"<<it->second<<endl;
++it;
}
#12
map<const char*,int> m;
m.insert(make_pair("a",1));
m.insert(make_pair("b",2));
m.insert(make_pair("c",3));
m.insert(make_pair("d",4));
map<const char*,int>::reverse_iterator it;
it=m.rbegin();
while(it!=m.rend()){
cout << it->first<<";"<<it->second<<endl;
++it;
}
map是根据less<T>的顺序。
#13
list和vector插入的不是键值对,是一个对象,要构造对象然后才能插入,遍历时还要一个个还原,好麻烦。
c#中有个Dictionary<T,T>就是按照插入顺序存储的,c++没有对应的集合吗?
vector<std::pair<> > ;
不就行了么,不需要还原啊。