草庐IT

Circle-Map

全部标签

c++ - auto const & map 迭代器的类型是什么? C++

我需要修复我的旧项目中的一些错误,我认为这是重构部分代码的最佳时机。我有一个具有以下结构的map:std::map>ComponentMap;在我需要遍历一些底层子map的某个地方,我使用了以下内容:for(std::map::iteratoriter=ComponentMap[compNameString].begin();iter!=ComponentMap[compNameString].end();++iter){//somecodeif(IsComponentOfType(iter,sCOMP_PRINCIPAL))iter->second->GetComponentValu

c++ - std::unordered_map:多线程插入?

我有一堆数据(一个巨大的0到ULLONG_MAX之间的整数列表),我想提取所有唯一值。我的方法是创建一个unordered_map,使用整数列表值作为键,使用一次性bool值作为映射值。我迭代列表并为每个键插入一次性值。最后,我迭代map以获取所有唯一键。非常简单。但是,我的列表非常大(数以亿计),我想对这个进程进行多线程处理。我知道一种天真的线程方法是行不通的,因为unordered_map插入会影响底层数据结构,因此它不是线程安全的。并且在每次插入周围添加锁会很慢,并且可能会抵消任何线程加速。然而,大概不是每次插入都会改变数据结构(只有那些不能适应现有分配桶的插入?)。有没有办法在

c++ - map 复杂查找操作

我想做以下事情:定义字符串和任何类型的对象(可以是列表、整数-任何对象)之间的映射。map的键可以如下所示(值同样不重要):"AAA/123"==>1"AAA/"==>2"BBB/"==>3"CCC/*"==>4"CCC/123"==>5现在,诀窍是我想在给定以下字符串的情况下找到正确的值:"AAA/123"应该给1。“AAA/111”应该给2。“CCC/111”应该给4。“CCC/123”应该给5。“BBB/AAA/123”应该给3。知道我如何使用C++和可能的STL/boost做到这一点吗? 最佳答案 这是litb答案的一个变体

c++ - 如何将 hash_map 与 char* 一起使用并进行字符串比较?

我正在使用std::hash_map并以某种方式设法使其工作,但现在发现默认的比较功能euqal_to进行指针比较而不是字符串比较。我已经通过制作我自己的比较类型(使用C的strcmp并且它大约是5LOC)来解决这个问题,但是如果STL中还没有一个比较类型,我会感到有点震惊。那么,有没有比较器可以做字符串比较呢?Relatedlink 最佳答案 嗯,std::strcmp当你执行#include时由C++定义.SGI'shash_mapdoc中的示例提供一个strcmp-基于为char*制作自己的相等性测试函数的示例(引用自SGI文

Java中List转Map的几种方式

        List和Map是Java集合框架中常用的数据结构,分别用于存储有序的元素列表和键值对。在某些场景下,我们需要将List转换为Map,以便更高效地访问和操作数据。本文将探讨几种常用的List转Map的方式,并对它们的特点进行分析比较。        大体来说,List转Map的方式可以分为以下几种:使用for循环遍历、Java8StreamAPI、ApacheCommonsCollections、GoogleGuava等。下面分别介绍这些方式的具体实现和特点。        1、使用for循环遍历:这是最基本也是最常见的一种方式。通过for循环遍历List,逐个获取元素,然后将

c++ - 使用 openmp 遍历 map

我正在尝试使用openMP在C++中迭代map,但我收到了三条错误消息我的循环的初始化、终止和增量形式不正确,而且我在使用openmp方面还很陌生,那么有什么办法可以解决这个问题,同时获得与串行循环相同的结果吗?以下是我使用的代码map::iteratordatIt;#pragmaompparallelforfor(datIt=dat.begin();datIt!=dat.end();datIt++)//constructthedistancematrix{...............} 最佳答案 这也可以通过使用一个简单的基于索

c++ - 我的 SFINAE 检查 std::map/std::vector 有什么问题?

我有一个简单的SFINAE场景来区分标准容器,如std::map:templatestructHasKeyType:sfinae_test{//(C)templatestaticYestest(typenameContainer::key_type*);//(A)templatestaticNotest(...);enum{value=(sizeof(test(null))==sizeof(Yes))};//(B)};与structsfinae_test{typedefcharYes;typedeflongNo;staticvoid*constnull;};当我用HasKeyType>

c++ - boost ptr_map 替换值

给定一个键,我试图替换一个值。对于不使用指针的常规映射,我只是使用了以下调用iter->second=object;//Whereobjectwaspassedinbyreference如何使用boost::ptr_map实现同样的效果?这里的概念是我们用derived_object替换整个类iter->second=derived_object;//derived_objectisabase_objectpointer 最佳答案 这样就可以了:the_map.replace(iter,derived_object);当然在哪里,t

c++ - tbb::concurrent_unordered_map::unsafe_erase 是否会使任何现有的迭代器失效?

我看到tbb::concurrent_unordered_map与std::unordered_map非常接近,同时对于并发是安全的。我也知道unsafe_erase对于insert等不是并发安全的。迭代器文档还声明任何现有的迭代器对于insert仍然有效,查找等问题是,unsafe_erase是否会使除被要求删除的迭代器之外的任何其他迭代器失效?std::unordered_map和std::map当然有这种行为,但它没有在任何地方的concurrent_unordered_map文档中指定。 最佳答案 tbb::unsafe_e

c++ - 如何删除包含结构的 map 或包含结构的 map ?

我有下面的代码来创建一个map,其中包含一个包含结构图的结构。我的问题是如何在不留下任何内存泄漏的情况下从providerMap中删除一个元素。我可以只做一个providerMap[prov_id].erase()还是我需要在第二个或更复杂的时候做一个删除?structuriPrivs{std::stringname;ucharproperties;};structproviderValues{intKeepAlive;std::mapuris;};std::mapproviderMap;RISStorageManager::risStorageResponseRISStorageMa