草庐IT

auto_mapping

全部标签

c++ - 什么时候应该使用 const_iterator 而不是 auto

下面是一个例子,我认为它说明了使用const_iterator比使用“constauto”更可取的情况。这是因为容器不提供cfind()函数。还有其他选择吗?或者应该使用“constauto”而忽略const的缺失?std::stringGetJobTitle(conststd::string&employee){usingEmployeeTitles=std::unordered_map;EmployeeTitlesemployees={{"Alice","Director"},{"Bob","Manager"},{"Charlie","Developer"}};//Option1.

c++ - libc++ 的 std::map/set::equal_range 实现给出了意想不到的结果

我注意到clang的libc++中的std::set::equal_range(与std::map相同)给出与libstdc++不同的结果。我一直认为equal_range应该返回等效于std::make_pair(set.lower_bound(key),set.upper_bound(key)),这是cppreference所说的和libstdc++所做的。然而,在libc++中,我有一个代码给出了不同的结果。#include#include#includestructcomparator{usingrange_t=std::pair;usingis_transparent=std

c++ - 如何实现具有多个键的快速 map ?

我正在寻找可以执行多个键查找的C++关联映射容器类型。map需要有恒定的时间查找,但我不在乎它是有序的还是无序的。它只需要快速。例如,我想将一堆std::vector对象存储在一个带有int和void*的映射中查找键。int和void*都必须匹配才能检索我的vector。这样的容器已经存在了吗?还是我必须自己动手?如果是这样,我该如何实现?我一直在尝试将一个boost::unordered_map存储在另一个boost::unordered_map中,但我还没有用这种方法取得任何成功。如果没有更简单的方法,也许我会继续使用Pershing这种方法。 最佳答案

c++ - std::map::insert(...) 中的段错误

我使用了搜索,但没有找到令我满意的答案...所以...这是一段代码://VoteContainer.htypedefuint32_torder_id_t;typedefintdriver_id_t;classVote{public:enumDriverVoteResponse{YES,NO,TIMEOUT};structDriverResponse{driver_id_tdriver_id;time_ttime;DriverVoteResponseresponse;};Vote():m_order_id(0),m_time_until(0){};Vote(order_id_tinOrd

c++ - std::map 应该如何与没有默认构造函数的值一起使用?

我有一个要放入map中的值类型。它有一个很好的默认复制构造函数,但没有默认构造函数。我相信只要我远离使用operator[]一切都会好的。但是我最终得到了像这样的非常丑陋的构造来实际插入一个对象。(我认为如果该键已经有一个值,插入就会失败)。//equivalenttom[5]=xbutwithoutdefaultconstructionstd::map::iteratorit=m.find(5);if(it!=m.end()){m->second=x;}else{m->insert(std::make_pair(5,x));}我相信这会扫描两次map,而且看起来也很丑。有没有更简洁/

c++ - 自动将 c++11 auto 关键字重写为派生类型

也许是个奇怪的问题,但是有没有可用的软件,给定一堆c++11代码,派生所有类型的自动类型变量并用这些派生类型重写代码?还有初始化列表?原因是我们想提供我们代码的向后兼容版本(非C++11),主要是为了与osx的可移植性。自动输入和初始化列表是我们最常使用的功能,因为它们使代码更具可读性,但手动删除它们是不行的。由于这实际上是编译器对自动类型化变量所做的,所以它似乎并不太牵强? 最佳答案 查看BOOST_AUTO和/或BOOST_TYPEOFhttp://www.boost.org/doc/libs/1_48_0/doc/html/t

C++ map<char, static method pointer>?

这个问题在这里已经有了答案:Howtocreateclassobjectsdynamically?(3个答案)关闭7年前。我已经编写了一个非常基本的表达式解析器,我希望它是可扩展的,以便它可以解析用户定义的表达式类型。例如,如果在解析时遇到字符,我想创建一个用于解析以此字符开头的表达式的类的实例。我有两个问题:如何将字符关联到静态方法指针?我想使用一个静态方法来返回类的一个新实例,因为我无法获得指向类构造函数的指针。以下语法可能是错误的,但这就是想法:typedefstaticIValue*(*returnPtrIValue)();map...假设我有A类,B类扩展了A类,我可以初始化

c++ - 如何以优雅的方式将 vector 复制到STL中的 map

目前,我在vector中有一些数据。目前,我想将vector转换为map。所以它会组织如下(N是偶数)。vector:元素1、元素2、元素3、元素4...元素N。map:key1:元素1,value1:元素2,key2:元素3value2:元素4...目前,我只是枚举vector,有没有其他优雅的方式来做到这一点。C++11是首选。谢谢。for(intx=0;x 最佳答案 您的代码有效(注意MichaelJ的建议,如果有奇数则不处理最后一个元素)。有一点可以改进。调用map[vec[x]]使用value_type的默认构造函数构造一

c++ - 以引用为值的 unordered_map

具有值类型为引用C++11的unordered_map是否合法?例如std::unordered_map我已经设法让它与VS2013一起编译,但是我不确定它是否应该这样做,因为它会导致一些奇怪的运行时错误。例如vectorsubscriptoutofrange尝试erase时抛出一个元素。一些谷歌搜索结果发现你不能有一个引用vector,但我找不到任何关于unordered_map的信息。更新进一步的实验表明vectorsubscriptoutofrange与引用的unordered_map无关,因为它是我代码中的错误。 最佳答案

c++ - 使用模板作为 std::map 中的键

我想知道是否可以使用模板作为map的键。例如:std::map,Node>nodes;本质上,我想要做的是能够拥有一堆包含任意类型数据的节点,并以该数据为键。我想我可以通过将所述数据转换为二进制并以此为键来实现,但这很麻烦,我想避免它。澄清一下,我希望能够使用任何类型的变量作为键。例如,如果我有2个节点,一个包含一个int作为其数据,另一个包含一个Foo作为其数据,我希望能够使用它们的数据作为键将它们放在同一个映射中。也许map不是我想要的,我不确定...想法?谢谢! 最佳答案 如果您没有明确禁用RTTI,请参阅nogard的回答。