Questions tagged «stdmap»

std :: map是C ++标准库中的类。它是一个排序的关联容器,其中包含具有唯一键的键值对。搜索,删除和插入操作具有对数复杂性。地图通常以红黑树的形式实现。


17
如何从std :: map检索所有键(或值)并将其放入向量中?
这是我出现的可能方法之一: struct RetrieveKey { template <typename T> typename T::first_type operator()(T keyValuePair) const { return keyValuePair.first; } }; map<int, int> m; vector<int> keys; // Retrieve all keys transform(m.begin(), m.end(), back_inserter(keys), RetrieveKey()); // Dump all keys copy(keys.begin(), keys.end(), ostream_iterator<int>(cout, "\n")); 当然,我们还可以通过定义另一个函子RetrieveValues从映射中检索所有值。 还有其他方法可以轻松实现这一目标吗?(我一直想知道为什么std :: map不包含成员函数供我们这样做。)
246 c++  dictionary  stl  stdmap 

12
在STL映射中,使用map :: insert比[]更好吗?
前一段时间,我与一位同事讨论了如何在STL 映射中插入值。我更喜欢, map[key] = value; 因为它感觉自然并且易于阅读,而他更喜欢 map.insert(std::make_pair(key, value)) 我只是问他,我们俩都不记得插入效果更好的原因,但是我确信这不仅是样式偏好,还有技术上的原因,例如效率。在SGI STL参考只是说“严格地说,这个成员函数是不必要的:它的存在只是为了方便。” 谁能告诉我这个原因,还是我只是梦想有一个原因?
201 c++  stl  map  stdmap 

9
插入地图的首选/惯用方式是什么?
我确定了将元素插入的四种不同方式std::map: std::map<int, int> function; function[0] = 42; function.insert(std::map<int, int>::value_type(0, 42)); function.insert(std::pair<int, int>(0, 42)); function.insert(std::make_pair(0, 42)); 哪一种是首选/惯用方式?(还有我没想到的另一种方式吗?)
111 c++  stl  insert  stdmap  std-pair 

9
std :: map插入还是std :: map查找?
假设要在其中保留现有条目的地图。20%的时间,您要插入的条目是新数据。使用返回的迭代器执行std :: map :: find然后进行std :: map :: insert有好处吗?还是尝试插入然后根据迭代器是否指示记录已插入而采取行动来更快?
90 c++  optimization  stl  stdmap 

6
使用find方法后如何更新std :: map?
std::map使用该find方法后如何更新键值? 我有一个这样的映射和迭代器声明: map <char, int> m1; map <char, int>::iterator m1_it; typedef pair <char, int> count_pair; 我正在使用地图存储字符出现的次数。 我正在使用Visual C ++ 2010。
90 c++  map  stl  stdmap 


4
如何为地图创建自己的比较器?
typedef map<string, string> myMap; 在中插入新对时myMap,它将使用该键string通过自己的字符串比较器进行比较。是否可以覆盖该比较器?例如,我想通过键string的长度而不是字母来比较键。还是有其他方法可以对地图进行排序?
83 c++  stl  stdmap 

8
使用char *作为std :: map中的键
我试图弄清楚为什么下面的代码不起作用,并且我假设使用char *作为键类型是一个问题,但是我不确定如何解决它或为什么它会发生。我使用的所有其他功能(在HL2 SDK中)都在使用,char*因此使用std::string会引起很多不必要的麻烦。 std::map<char*, int> g_PlayerNames; int PlayerManager::CreateFakePlayer() { FakePlayer *player = new FakePlayer(); int index = g_FakePlayers.AddToTail(player); bool foundName = false; // Iterate through Player Names and find an Unused one for(std::map<char*,int>::iterator it = g_PlayerNames.begin(); it != g_PlayerNames.end(); ++it) { if(it->second == NAME_AVAILABLE) { // We found an Available …
81 c++  map  stdmap 



7
如何使用以用户定义类型为键的std :: maps?
我想知道为什么不能将STL映射与用户定义的类一起使用。当我编译下面的代码时,我收到以下神秘的错误消息。这是什么意思?此外,为什么仅在用户定义的类型中发生这种情况?(将原始类型用作键时可以使用。) C:\ MinGW \ bin .. \ lib \ gcc \ mingw32 \ 3.4.5 ........ \ include \ c ++ \ 3.4.5 \ bits \ stl_function.h ||在成员函数`bool std ::中less <_Tp> :: operator()(const _Tp&,const _Tp&)const [with _Tp = Class1]':| C:\ MinGW \ bin .. \ lib \ gcc \ mingw32 \ …
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.