草庐IT

map_region

全部标签

c++ - 为什么存储在 map 中时需要默认构造函数?

我收到错误:error:nomatchingfunctionforcallto'A::A()'note:candidatesare:A::A(constA&)note:A::A(conststd::string&,size_t)来自这里:#include#includeusingstd::map;usingstd::string;classA{public:stringpath;size_tsize;A(conststring&p,size_ts):path(p),size(s){}A(constA&f):path(f.path),size(f.size){}A&operator=(c

c++ - GCC 4.4/4.5 unique_ptr 不适用于 unordered_set/unordered_map

有什么地方可以确认吗?我不确定是GCC的问题还是我的代码的问题。例如,以下代码无法编译:#include#includeusingnamespacestd;intmain(){unordered_set>s;unique_ptrp(newint(0));s.insert(move(p));return0;}错误信息太大,我不想放在这里。GCC版本为4.5.3,编译标志为-std=gnu++0x。也在4.4.5上测试过。 最佳答案 GCC4.6.1按原样接受您的代码,我认为它没有任何问题(即关联容器的value_type必须是Empl

c++ - 将元素插入 std::map 而无需额外复制

考虑这个程序:#include#include#definelogmagic_log_function//Pleasedon'tmindthis.////ADVENTURESOFPROGOTHEC++PROGRAM//classelement;typedefstd::mapmap_t;classelement{public:element(conststd::string&);element(constelement&);~element();std::stringname;};element::element(conststd::string&arg):name(arg){log("

c++ - std::map 和 std::vector 线程安全吗?

我正在开发一个多线程应用程序,每个线程将从一组映射和vector中读取(不会修改结构)。任何人都可以建议,因为线程只从这些结构中读取,是否有必要在读取这些结构的代码块周围实现一个可共享的互斥锁? 最佳答案 在只读映射/vector的情况下,不需要使用互斥量。vector都已经回答了这个问题和map虽然C++03没有提到线程,但C++11有涵盖您问题的子句。23.2.2容器数据竞争[container.requirements.dataraces]1Forpurposesofavoidingdataraces(17.6.5.9),im

c++ - 使用 pair<int, int> 或 string 作为 map<> 键,哪个更高效?

我想使用map存储键值对。map的key应该包含一个点的坐标(int)信息。一种可能性是转换ints至string.例如,坐标(x,y)可以表示为"x#y"并存储此字符串"x#y"作为key。另一种可能性是使用一对将坐标存储为pair并使用这个pair作为关键。哪种方法更好,为什么? 最佳答案 这取决于您对高效的定义,我们很快就会转向可能被视为过早优化的内容。有很多因素在起作用,顺便说一句,你表达问题的方式我认为我们应该看一个非常简单的问题:您的主要考虑因素可能是:Storage:每个键占用多少内存速度:关键比较的复杂程度初始化:创

Java 集合Map相关面试题

📕作者简介:过去日记,致力于Java、GoLang,Rust等多种编程语言,热爱技术,喜欢游戏的博主。📗本文收录于java面试题系列,大家有兴趣的可以看一看📘相关专栏Rust初阶教程、go语言基础系列、spring教程等,大家有兴趣的可以看一看📙Java并发编程系列,设计模式系列、goweb开发框架系列正在发展中,喜欢Java,GoLang,Rust,的朋友们可以关注一下哦!文章目录HashMap相关面试题二叉树二叉树概述二叉搜索树红黑树散列表散列表(HashTable)概述散列函数和散列冲突散列冲突-链表法(拉链)时间复杂度-散列表面试题-说一下HashMap的实现原理?面试题-HashMa

c++ - Boost 程序选项遍历 variables_map

po::options_descriptiondesc("Thisaretheoptionsthatareavailable");desc.add_options()("help","printhelp")("deer",po::value(),"sethowmanydeeryouwant")("rating",po::value(),"howgood?")("name",po::value(),"andyournameis...?");po::variables_mapvm;po::store(po::parse_command_line(argc,argv,desc),vm);po

c++ - STL map 排序

更新:我遵循了John的指导并修改了他的代码,通过创建比较器函数并将其插入到STL映射中的比较参数来解决我的问题。由于我的字符串日期严格按照显示的格式,使用substr就可以了。我的输出和代码如下供您引用。DateTotalSales01JAN1900$420JAN1902$4018NOV1912$250019NOV1912$250019OCT1923$2501JAN1991$2215NOV1991$300GrandTotal:$5391structCompareDates:publicstd::binary_function{booloperator()(conststd::stri

c++ - 在 std::map 中使用 std::reference_wrapper

我以为maps和reference_wrappers会很容易,但我被一些奇怪的东西绊倒了:#include#includeintmain(void){std::map>mb;constinta=5;mb[0]=std::cref(a);}这段代码给我以下编译器错误:Infileincludedfromc:/MinGW/x86_64-w64-mingw32/include/c++/bits/stl_map.h:63:0,fromc:/MinGW/x86_64-w64-mingw32/include/c++/map:61,from../test/main.cpp:9:c:/MinGW/x8

c++ - 如何获取 std::map 的前 n 个元素

由于C++std::map中没有.resize()成员函数,我想知道如何获得最多包含n个元素的std::map。显而易见的解决方案是创建一个从0到n的循环,并使用第n个迭代器作为std::erase()的第一个参数。我想知道是否有任何解决方案不需要循环(至少在我的用户代码中不需要)并且更像是“STL方式”。 最佳答案 您可以为此使用std::advance(iter,numberofsteps)。 关于c++-如何获取std::map的前n个元素,我们在StackOverflow上找到一