草庐IT

C++11 在 map<key, value> 中为值(int 和 string)存储多种数据类型的最简单方法?

我想要一个使用的map键字符串值的整数或字符串像这样:std::mapmyMap;myMap["first_key"]=10;myMap["second_key"]="stringValue";做这种事情的最简单方法是什么?已添加)我正在寻找适用于C++11的解决方案 最佳答案 在c++17中,你可以使用std::variant,在此之前,您可以使用boost中的那个:usingIntOrString=std::variant;std::mapmyMap;myMap["first_key"]=10;myMap["second_key

c++ - 在 C++0x 标准中会有 unordered_map,这与 boost unordered_map 相比如何?

哪个更有效率?有什么好的基准吗? 最佳答案 C++11的std::unordered_map规范类似于基于tr1::unordered_map的boost::unordered_map。话虽这么说,还是有一些细微的差别。在C++11中添加右值引用会导致添加可能对性能有用的emplace和emplace_hint函数。C++11现已得到广泛实现,因此您应该能够开箱即用地使用std::unordered_map。C++14不会对其进行重大更改,C++17将(可能)添加insert_or_assign和try_emplace成员函数。

c++ - 如何将指针映射公开为 const 指针映射?

我有一个类,其中包含一个std::map指针作为成员。现在,我想以只读方式公开该成员:map和指向的对象都不允许修改。在内部,我需要这些指针是非常量的,并且我想将它们公开为常量。我确实有一个至少可以编译的解决方案,但我想知道我是否会遇到任何隐藏的问题。classA{public:conststd::map&GetMap()const{return*(reinterpret_cast*>(&m_Map));}private:std::mapm_Map;};我能想到一个可能的问题:如果std::map的内部布局对于指针映射和const指针映射不同,那么这将导致丑陋的错误。但我想不出任何理智

c++ - std::map 是否允许在只读操作后重新平衡(如 Splay 树)

一些二叉树数据结构(例如Splay树)将在读取时重新平衡以将最近访问的项目移向根,这样可以减少后续查找时间。标准容器(std::map、std::set)是否允许这样做?至少一个问题是线程安全。以前,我认为只要您只对标准容器执行只读操作,从多线程执行此操作是安全的,而无需引入互斥锁/锁等。也许我需要重新考虑一下?我知道通常红黑树用于标准树容器,并且这些数据结构通常不会在读取时被修改。但是,确实修改过的假设实现是否符合要求?我的c++-standards-foo需要改进,但我不确定当前标准是否解决了容器的线程安全问题。这在c++0x中有什么不同吗? 最佳答案

c++ - 将 C++ 映射复制到键和值 vector 中

我有一个map并且我希望第一列i.e(*it).first被推回一个vector然后(*i​​t)->second被推回到另一个vector中这是最好的方法吗?std::vectortest;for(it=mymap.begin();it!=mymap.end();it++){test.push_back((*it).first);}我的另一个问题是如果我有一个循环即我如何将所有整数i插入到(*i​​t).first中?for(inti=0;i我想在(*i​​t).first中有一些整数,并在(*i​​t).second;中有相关值 最佳答案

Google-Map API给予无法加载资源:服务器以403()状态响应

目前,我正在使用AngularJS进行一个位置项目,其中我正在使用GoogleMapsJavaScriptAPI加载地图,并用于GoogleAutococterte服务。我从中下载了JShttp://maps.googleapis.com/maps/api/js并放置在项目JS文件夹中。我创建了指令,代码如下:.directive('callerLocation',function(){return{restrict:'E',replace:true,scope:{callerLocation:'='},template:'',link:function($scope,elm,attrs){v

c++ - 我应该为我的目的使用哪种数据结构?

这个问题在这里已经有了答案:InwhichscenariodoIuseaparticularSTLcontainer?(10个答案)关闭9年前。我需要一个像map一样的数据结构,但每个键可能有多个与之相关的值,但我需要获取与单个键对应的所有值作为对象数组。那么哪种数据结构最适合执行此操作。我不需要在数据结构中搜索,我只需要快速访问与特定键对应的所有值。我查看了std::multimap但它没有返回特定键的所有值。那么我可能会使用哪种C++中最好的数据结构?

c++ - 为什么 implicit == on map<<int,MyClass> 不编译?

我在为我的一个类(class)定义==时遇到了一个奇怪的问题。我将此处的代码简化为我在visual2013上测试过的示例;MyClass在命名空间N中定义这确实编译:N::MyClassa,b;booltest=a==b;这也是:constN::MyClassa,b;booltest=a==b;这不编译std::mapa,b;booltest=a==b;供您引用,=​​=运算符声明如下:booloperator==(constN::MyClass&a,constN::MyClass&b);这是我得到的错误:errorC2678:binary'==':nooperatorfoundwhi

c++ - 从 map<key, set<datatype>> 访问元素

我正在使用如下所示的数据结构:map>data;到目前为止,我在使用foreach循环处理map时没有遇到任何问题,但是,现在我需要像这样打印出map中的数据:KEY:elem1,elem2,elem3KEY2:elem1,elem2,elem3由于末尾缺少逗号,我不能再使用foreach循环了(可以吗?)。由于我是C++、C++11及其提供的所有乐趣的新手,所以我很迷茫。我想到了:for(autoi:data){cout我知道自己想要什么,只是对语法一无所知,C++引用也帮不上什么忙。感谢您的回答,同时我将自己浏览C++引用资料。 最佳答案

c++ - 从 initializer_list 错误构造 std::map

我正在尝试创建一个类构造函数,它将接受一个初始化列表并用它初始化一个映射,如下所示:classTest{std::mapm_ints;public:Test(std::initializer_list>init):m_ints(init){}};但这会导致很长的错误消息,坦率地说,我不明白。我需要更改什么才能使这项工作正常进行? 最佳答案 声明std::initializer_list的模板参数具有类型std::pair这是一个演示程序#include#include#includeclassTest{std::mapm_ints;