草庐IT

mapped_type

全部标签

c++ - "' void* ' is not a pointer-to-object type"在没有 void* 的代码中?

我的代码有问题。在Xcode或使用C++11编译器中,此代码运行良好。但是,当我将此代码提交给在线法官时,判决显示“编译错误”。我认为他们使用的是C++4.7.1编译器,当我尝试编译它(使用Ideone)时,它说:prog.cpp:Infunction'voidprintArray(int)':prog.cpp:27:error:'void*'isnotapointer-to-objecttypeprog.cpp:27:error:'void*'isnotapointer-to-objecttypeprog.cpp:27:error:'void*'isnotapointer-to-ob

c++ - 我可以在从另一个线程插入/删除时访问 C++11 std::map 条目吗?

我可以在另一个线程插入/删除条目时访问(不锁定)std::map条目吗?示例伪C++:typedefstruct{intvalue;intstuff;}some_type_t;std::mapmy_map;//thread1does:my_map.at('a')->value=1;//thread2does:some_type_t*stuff=my_map.at('b');//thread3does:my_map.erase('c');//I'mnotmodifyinganyelementsTisapointertoanpreviouslyallocated"some_type_t"s

c++ - 检测迭代器是否是 std::map 的最后一个元素

这类似于thisquestion但不是重复的。我正在尝试遍历map并打印每个元素的值,但最后一个元素的输出略有不同。在那个问题中,他们建议使用map.rbegin().base(),但它对我不起作用。这是我的代码:#include#includeintmain(){std::mapcharMap={{'a',1},{'b',2},{'c',3},{'d',4}};for(autoiter=charMap.begin();iter!=charMap.end();iter++){std::coutfirstsecond;if(iter==charMap.rbegin().base())st

c++ - "missing type specifier"构造函数声明错误

我在2个不同的文件中有2个类:正则矩阵.h:#ifndef_RM_H#define_RM_H#include"SparseMatrix.h"...classRegMatrix{...RegMatrix(constSparseMatrix&s){...}//ctor...};#endif稀疏矩阵.h:#ifndef_SM_H#define_SM_H#include"RegMatrix.h"...classSparseMatrix{...SparseMatrix(constRegMatrix&r){...}//ctor...};#endif在构造函数行上我得到了错误:错误C4430:缺少类

c++ - 在 c++ 中加速 map<string,int> .find() 的最快方法。按键按字母顺序排列的位置

我有一张包含大约100,000对的map。有什么方法可以在使用find()时加快搜索速度,因为键是按字母顺序排列的。另外我应该怎么做。我知道您可以在创建map时指定一个新的比较器。但这会加速find()函数吗?提前致谢。[已解决]感谢一群人,我决定使用vector并使用下界和上界来“剪断”一些搜索。我也是新来的,有什么方法可以将这个问题标记为已回答,或者选择一个最佳答案吗? 最佳答案 不同的比较器只有在设法更快地进行比较时才会加快查找速度(这对于字符串通常非常困难)。如果您基本上是按顺序插入所有数据,然后进行搜索,则使用std::v

c++ - 错误 :incompatible types in assignment of 'const char[5]' to 'char[10]'

我已经将c定义为charc[][10]在函数定义中并像c[i]="gray";一样使用它怎么了?我在网上搜索,它显示相同的语法。谢谢。 最佳答案 您不能对数组使用赋值(=)。如果将c更改为指针数组,这可能会起作用,具体取决于您需要使用它做什么。constchar*c[20];c[i]="gray";或者如果声明的类型必须是数组的数组,您可以使用strncpy:charc[20][10];strncpy(c[i],"gray",sizeof(c[i])); 关于c++-错误:incompa

c++ - map 什么时候变得比两个 vector 更好?

map对其所有元素进行二分搜索,这具有对数复杂度——这意味着对于足够小的对象集合,map的性能将低于具有线性搜索的两个vector。对象(键)池应该有多大才能使映射的性能开始优于两个vector?编辑:问题的更一般化版本:对象池应该有多大才能使二分搜索的性能优于线性搜索?我使用字符串作为键,值是指针,但我的特定用例可能无关紧要。我比较想了解如何正确使用这两个工具。 最佳答案 如果你能原谅我这么说的话,大多数答案对我来说就像是在用各种方式说:“我不知道”,而不是真的承认他们不知道。虽然我大体上同意他们给出的建议,但他们似乎都没有尝试直

C++,通过 const 引用访问 std::map 元素

我对const有疑问。说我有:classA{friendstd::ostream&operatorsomeMap;intsomeInteger;};std::ostream&operator由于与map的const冲突,这种代码在编译时会产生错误(如果我注释掉打印map值的那一行就没问题),如果我去掉函数原型(prototype)中的“const”很好。我真的看不出问题在哪里..有什么帮助吗? 最佳答案 std::map::operator[]不是const,因为如果元素不存在,它会插入一个元素。在C++11中,你可以使用std::

c++ - 如何使用基于范围的 for 循环修改 map 中的值?

我有一个基于范围的for循环来迭代foobar中的元素,如下所示:#include#includeintmain(){std::mapfoobar({{1,1},{2,2},{3,3}});for(autop:foobar){++p.second;std::cout此代码产生以下输出:{1,2}{2,3}{3,4}{1,1}{2,2}{3,3}第一行在for循环中被修改和打印,第二行应该打印相同的修改值。为什么输出不匹配?对std::map的更改是否仅在循环范围内有效?有没有一种方法我不仅可以访问而且可以修改这些值?Arunningversionofthiscode可以在cpp.sh上

c++ - 错误 : Variable length array of Non-POD element type 'string'

在开始之前,我必须首先声明,我已经研究过针对此错误的可能解决方案。不幸的是,它们都与不使用数组有关,这是我项目的要求。另外,我目前正在学习CS入门类(class),所以我的经验几乎没有。数组的用途是从文件中收集名称。因此,为了初始化数组,我计算了名称的数量并将其用作大小。问题是标题中所述的错误,但我仍然使用一维数组时看不到解决方法。主要.cpp#include#include#include#include#include#include"HomeworkGradeAnalysis.h"usingnamespacestd;intmain(){ifstreaminfile;ofstrea