我有一个地图,我想在每个数据types对象成员函数上执行调用。 我还知道如何在任何序列上做到这一点,但有可能在关联容器上做到这一点? 我能find的最接近的答案是: Boost.Bind访问std :: for_each中的std :: map元素 。 但是我不能在我的项目中使用boost,所以,有没有一个STL的替代品,我错过了提高::绑定? 如果不可能的话,我想创build一个指向数据对象的临时序列,然后在它上面调用for_each,如下所示: class MyClass { public: void Method() const; } std::map<int, MyClass> Map; //… std::vector<MyClass*> Vector; std::transform(Map.begin(), Map.end(), std::back_inserter(Vector), std::mem_fun_ref(&std::map<int, MyClass>::value_type::second)); std::for_each(Vector.begin(), Vector.end(), std::mem_fun(&MyClass::Method)); 它看起来太混乱,我不太喜欢它。 有什么build议么?
例如,我有一个已知sizeof(A)和sizeof(B)的std :: map,而map里面有N个条目。 你如何估计它的内存使用量? 我会说这是类似的 (sizeof(A) + sizeof(B)) * N * factor 但是,这个因素是什么? 不同的公式可能? 也许要求上限更容易?
如何使用find方法更新std::map中的键的值? 我有一个像这样的映射和迭代器声明: map <char, int> m1; map <char, int>::iterator m1_it; typedef pair <char, int> count_pair; 我正在使用地图来存储一个字符的出现次数。 我正在使用Visual C ++ 2010。
我想通过一个std::map循环,并根据其内容删除项目。 这个怎么做最好?
这可能是一个愚蠢的问题,我对C ++和编程一般来说是相当新的。 我希望了解几个STL容器的使用,考虑到这一点,我想知道使用std :: set和使用向量或映射的好处是什么? 我似乎无法find这个问题的明确答案。 我注意到集合使用地图,但为什么不总是使用地图或总是使用集合。 而是提供了2个非常类似的容器。 提前致谢。
有没有一种方法来指定默认值std::map的operator[]返回时,一个键不存在?
可能重复: 在STL地图中,使用map :: insert比[]更好吗? 我想知道,当我将元素插入到地图中时,推荐的方法是什么。 我是不是该 map[key] = value; 要么 map.insert(std::pair<key_type, value_type>(key, value)); 我做了以下快速testing: #include <map> #include <string> #include <iostream> class Food { public: Food(const std::string& name) : name(name) { std::cout << "constructor with string parameter" << std::endl; } Food(const Food& f) : name(f.name) { std::cout << "copy" << std::endl; } Food& operator=(const Food& f) […]
我已经确定了插入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)); 哪一种是首选/惯用的方式? (还有没有想过的另一种方式?)
假设您想要保存现有条目的地图。 20%的时间,你插入的条目是新的数据。 是否有利用做std :: map :: find然后std :: map :: insert使用返回的迭代器? 还是更快尝试插入,然后根据迭代器是否指示logging是否插入?
前一段时间,我和一位同事讨论了如何在STL 地图中插入值。 我更喜欢map[key] = value; 因为它感觉自然,而且读起来很清楚,而他更喜欢map.insert(std::make_pair(key, value)) 我只是问他,我们都不记得插入效果更好的原因,但我相信这不仅仅是一种风格偏好,而是有效率等技术原因。 SGI STL参考文件只是简单地说:“严格地说,这个成员函数是不必要的:它只是为了方便而存在的。” 有谁能告诉我这个理由,还是我梦想有一个?