首页 > TAG信息列表 > stdmap

c-使用STL容器进行boost :: interprocess :: managed_shared_memory

请考虑以下情况: class Helper { public: // Getters and setters are present! private: int i; std::map<int, boost::interprocess::managed_shared_memory> shm; } int main() { boost::interprocess::managed_shared_memory shmInf

c-将std :: map复制到对的std :: vector中

我正在尝试将地图复制到向量对中,因此可以根据向量对中的第二个数据成员对向量进行排序.我已经这样解决了: void mappedWordsListSorter(){ for (auto itr = mappedWordsList.begin(); itr != mappedWordsList.end(); ++itr){ vectorWordsList.push_back(*itr); } sort(v

c – 如何合并两个STL地图?

如何将两个STL地图合并为一个?它们都具有相同的键和值类型(map< string,string>).如果密钥重叠,我想优先考虑其中一个地图.解决方法:假设您要保留mapA中的元素,并在mapB中合并mapA中没有键的元素: mapA.insert(mapB.begin(), mapB.end()) 我想会做你想做的事. 工作范例: #include <

c – 为什么使用std :: less作为比较std :: map和std :: set中的键的默认函子?

我想知道为什么std :: map和std :: set使用std :: less作为比较键的默认函子.为什么不使用类似于strcmp的仿函数?就像是: template <typename T> struct compare { // Return less than 0 if lhs < rhs // Return 0 if lhs == rhs // Return greater than 0 if l

c – map,lambda,remove_if

所以,我对std :: map,lambda和stl算法(remove_if)有疑问.实际上,与std :: list或std :: vector相同的代码运行良好. 我的测试示例: #include <map> #include <iostream> #include <algorithm> struct Foo { Foo() : _id(0) {} Foo(int id) : _id(id) { } in

为什么我不能在C中的`std :: map`中存储引用?

我知道引用不是指针,而是对象的别名.但是,我仍然不明白这对我作为一名程序员究竟意味着什么,即什么是引擎盖下的引用? 我认为理解这一点的最好方法是理解为什么我不能在地图中存储引用. 我知道我需要停止将引用视为指针的语法,只是不确定如何:/解决方法:他们我理解它,引用被实现为引

c – 如何为地图创建自己的比较器?

typedef map<string, string> myMap; 将新对插入myMap时,它将使用键字符串通过自己的字符串比较器进行比较.是否可以覆盖该比较器?例如,我想比较密钥字符串的长度,而不是字母表.或者还有其他方法可以对地图进行排序吗?解决方法:std :: map最多需要四个模板类型参数,第三个是比较器.

stdmap 用 at() 取值,如果 key 不存在,不好意思,程序崩溃。QMap 用 value()取值,如果 key 不存在,不会崩溃,你还可以指定默认值

我觉得 Qt6 最应该升级的是容器类stdmap 在遍历的时候,同时获取 key 与 value 非常方便:for(auto& var:map){    qDebug()<<var.first<<var.second;}但是 QMap 就做不到这么便利了。for(auto i=qmap.begin();i!=qmap.end();i++){    qDebug()<<i.key()<<i.value();}不过说实

C,std :: map的迭代器

如何声明迭代器 std::map <T, Point <T> *> , 哪里: template <typename T> struct TList { typedef std::vector < std::map <T, Point <T> *> > Type; }; 在以下代码中 int main () { .... std::map <T, Point <T> *> :

c – 如果我的钥匙是我价值的一部分,我应该使用地图还是套装?

在C中,我有一个按名称排序的类,它是一个std :: string.我希望在std :: map或std :: set中每个唯一名称只有一个. 我可以使用std :: set,因为运算符<将按名称命令我的实例,但是,我需要按名称查找实例.使用键是名称的映射是直截了当的,但是,我也可以使用一个集合并构造一个我的类的虚

c – std :: map的同义词行为

我有一个 std::map<a,std::vector<b>> m; a是结构 struct a { std::string c,d; bool operator<(const a &o) { return !(c==o.c && d==o.d);} } 我用这种方式填充地图 for(/*blah blah*/) { m[A].push_back(B) } 填充后我打印一些东西 std::cout << "S

c – 当map包含string的向量作为值时,从值获取键的有效方法

如何使用值作为字符串向量来获取密钥,反之亦然.以下是我的代码. #include<iostream> #include<map> #include<string> #include <unordered_map> #include <vector> using namespace std; int main() { std::unordered_map<std::string, std::vector<std::string>

c – 如何比较boost :: variant以使其成为std :: map的关键?

如何比较boost :: variant以使其成为std :: map的关键? 似乎没有为boost :: variant定义运算符<()解决方法:编辑修复错误应用BOOST :: APPLY_VISITOR 您可以为变体创建二进制访问者,然后使用boost :: apply_visitor为您的地图创建比较器: class variant_less_than : public boos

c – 在std :: map中找到最接近输入数范围的最有效的std算法是什么?

我的数据将存储在整数和整数的映射中 关键是任何数字的start_range值为end_range 例如我的地图将如下所示: std::map<int,int> mymap; mymap[100]=200; mymap[1000]=2000; mymap[2000]=2500; mymap[3000]=4000; mymap[5000]=5100; 现在,如果我的输入数字是150,那么算

c – 从迭代器更改std :: map中的值

我的应用程序合并了两个std :: map实例.如果没有重复项,则合并完成而不进行干预.但是,如果检测到重复,则该方法将询问是否应忽略或覆盖新值. (此查询可以通过规则表,对用户的消息框或其他一些逻辑来回答……它只是从具有bool confirm()const方法的纯虚拟类派生的类的实例.) 如果插

c – 从标记为const的函数中的std :: map中检索项目

考虑以下C代码: // A.h class A { private: std::map<int, int> m; int getValue(int key) const; }; // A.cpp int A::getValue(int key) const { // build error: // No viable overloaded operator[] for type 'const std::map<int, int>�

c – boost :: serialization:具有私有默认构造函数的对象在向量中工作,但不在地图中工作

请考虑以下代码: #include <boost/serialization/nvp.hpp> #include <boost/archive/xml_iarchive.hpp> #include <boost/archive/xml_oarchive.hpp> class Foo{ friend class boost::serialization::access; template<class Archive> void se

c – 直接将std :: map插入std :: vector

对不起,如果问题非常简单. 我有一张地图矢量: typedef map<char, int> edges; typedef vector<edges> nodes; nodes n; 现在让我们说我想推动玩具优势.我尝试了不同的东西,我的工作是什么 edges e; //declare an edge e['c'] = 1; //initialize it n.push_back(e);

c – Boost.Assign:使用带有map_list_of的对象?

使用C和boost.在Boost.Assign中,我可以将new运算符与map_list_of一起使用吗? 例如: std::map<int, MyObject*> objects = boost::assign::map_list_of (1, new MyObject())(2, new MyObject())(3, new MyObject()) 如果没有,还有另一种方法吗?解决方法:似乎是的.这与VS2010&

c – 使用比较运算符将std :: string作为std :: map中的键

我正在尝试使用std :: string作为std :: map中的键,但是我无法正确找到().我的代码有点复杂和大,所以这是一个小程序,演示了我遇到的问题.如果有人能告诉我为什么这不起作用,我将非常感激. 谢谢. #include <stdio.h> #include <string> #include <map> struct comparer { pub

c – 更改std :: map的排序模式

我正在创建一个std :: map< a,b>其中排序标准是用:: operator<定义的. 有没有办法在某些时候更改地图的类型,以便它从现在开始通过另一个排序算法排序?它还需要重新排序地图的当前内容 谢谢解决方法:您必须创建另一个地图,并将第一个地图的元素复制到第二个地图中,如下所示: std::

c – 哪个矢量和地图使用更少的内存(大数据集和未知大小)

我想知道哪个容器在std :: map和std :: vector之间使用较少的内存和一大组数据. 大量帖子谈论效率,我的优先级不是效率而是内存消耗.所以,如果我们不知道我们的数据的数量(在我的情况下可以超过12,000,000个条目,每个条目是一个20个字符的字符串),地图真的比矢量好吗?解决方法:取决

c – 避免在map / unordered_map中进行多次查找

假设我们有一个昂贵的函数将字符串映射到int并希望将结果缓存在映射中. 最简单的代码就是 int mapStringToIntWithCache(std::string const& s) { static std::unordered_map<std::string, int> cache; if (cache.count(s) > 0) return cache[s]; else return cache[s

c – vector :: iterator与std :: map中的list :: iterator键

为什么可以定义vector :: iterator to int的map,但是list :: iterator to int的map不能? #include <vector> #include <list> #include <map> #include <algorithm> using namespace std; int main() { int ia[] = {1,2,3,4,5,6,7,8,9,0}; vector<i