草庐IT

map长度

全部标签

c++ - std::map unique std::less<> 函数,用于 2D 点作为键

好吧,经过四个小时的调试,尽管我很困惑,但我找到了问题的原因......我正在制作一些程序,在std::map中保存一些点并在我的窗口中呈现这些点。但奇怪的是,有些点未能进入map。std::mapm_Props_m;voidAddProp(std::pairp){m_Props_m.insert(p);}structPoint2{unsignedintPoint2::x;unsignedintPoint2::y;//--------Point2::Point2():x(0),y(0){}boolPoint2::operator(constPoint2&b)const{return(x

c++ - 用于从 std::map 的最后 n 个元素创建 std::vector 的惯用 C++

从std::map的最后n个元素创建std::vector的C++惯用方法是什么?我对保留vector中的顺序不感兴趣。我可以像这样复制元素:std::mapm;size_tn=3;std::vectorv;std::map::iteratorit=m.end();while(n--){//assumingm.size()>=nit--;v.push_back(it->second);}但是,有没有其他更惯用的方法来做到这一点? 最佳答案 std::copy如果您想复制类型不变,那将是合适的。然而,std::map::iterato

c++ - 为 UDF std::unordered_map 提供 ":"运算符?

我正在围绕std::unorered_map编写一个包装器,但是我有点不确定我应该如何提供一个公共(public)成员函数来访问C++11中“:”特性提供的迭代,例如://Iteratethroughallunoredered_mapkeysfor(autox:my_map){//Processeachx}我如何通过围绕unordered_map的包装器提供与上述相同的功能?尝试过的解决方案:#include#includetemplateclassMyClass{private:std::unordered_mapmap;std::mutexmtx;public:MyClass(){

c++ - 传递给函数时获取包含元素 0 的数组的长度

有什么方法可以打印包含元素0的数组的长度,并且该数组已传递给一个只能有一个参数作为数组的函数?例子:intarrLen(intarr[]){//getsizehere;}intmain(){intarr[]={0,1,2,3,4,5};arrLen(arr);}在C++中有一个限制,如果数组的元素为零,我们不能将其与NULL进行比较,但仍然询问是否有办法做到这一点。我只能将数组传递给函数是我的限制。 最佳答案 在您的示例中,您可以使用函数模板来获取您想要的内容:templateintarrLen(int(&arr)[N]){retu

c++ - 在 unordered_map 中放置 unordered_set

如何将(静态定义的)unordered_set添加到unordered_map,而不必复制unordered_set?我试过这个:std::unordered_map>my_map;for(inti=0;i还有这个:std::unordered_map>my_map;for(inti=0;i({"foo","bar"})));但它们都无法编译,我得到了这些错误(分别):error:nomatchingfunctionforcallto‘std::unordered_map>>::emplace(int&,)’和error:nomatchingfunctionforcallto‘std:

c++ - 如何将 map 移动到其他 map

std::map>listOf1;std::map>listOf2;如何将listOf1添加到listOf2?可能这很棘手,因为值是unique_ptr。正常解决方案:listOf2.insert(listOf1.begin(),listOf1.end());不工作并给出错误SeverityCodeDescriptionProjectFileLineSourceSuppressionStateErrorC2280'std::pair::pair(conststd::pair&)':attemptingtoreferenceadeletedfunctionc:\programfiles(

c++:通过键从std::map中弹出一个元素

我有兴趣从map中删除具有特定键的元素并使用该元素。看起来像这样的东西:itr=MyMap.pop(wantedKey);//NowMyMapismissingtheelementwhichhasthekey'wantedKey'.//Dosomethingwiththiselementthrough'itr'.是否有用于执行此操作的STL映射方法?编辑根据carleeto的回复,我想澄清一下:我需要的是从map中删除元素并且程序之后能够使用它,它可能是元素本身作为对,不一定是迭代器。 最佳答案 有两种选择:就地使用它然后删除它,或

【Golang map并发报错】panic: assignment to entry in nil map

go并发写map[string]interface{}数据的时候,报错:panic:assignmenttoentryinnilmap多个key同时操作一个map时,如:test[key1]=1test[key2]="a"test[key3]=true就会遇到并发nil值报错,什么test[key-xxx]=make()根本不行。用异步sync.Map解决://map[string]interface{}全局配置(自定义)参数。读写varsyncMapInterfacesync.Map//SetGlobalMapInterface新增或更新funcSetGlobalMapInterface(k

c++ - 在 C++ 中获取 const char * 长度的最佳方法

我知道两种获取constchar长度的方法*constchar*str="HelloWorld!";intSize=0;while(str[Size]!='\0')Size++;其他方式很简单constchar*str="HelloWorld!";size_tSize=strlen(str);但我不想使用像strlen这样的strlib函数,我认为这个函数也使用了我的第一种方式行为。因为在PC世界中,当我们想要计算某些东西时,我们需要计算每个block的数量,并且没有魔法可以通过一次移动获得长度,所以我认为第一种方法是获得constchar*。其他方式我认为第一种方式对于重弦来说可能太

c++ - std::map::size_type 对于 std::map 其 value_type 是它自己的 size_type

我有一个std::map,float>这占用了太多内存,为了使用更少的内存,我决定将唯一字符串映射到整数(例如std::map,其中每个新的唯一字符串都映射到map的当前size()),并将这些整数值用作映射的成对键(例如,std::map,float>)。而不是int,我想用std::map::size_type:usingmap_index=std::map::size_type;std::pairkey;当然,这不会编译,因为我需要为map提供参数列表:vector.cc:14:19:error:invaliduseoftemplate-name`std::map'without