草庐IT

c++ - std::unordered_map::begin(int n) 行为

这是我正在运行的代码,使用g++4.6和-std=c++0xstd::unordered_mapum;um.insert(std::make_pair(42,43));um.insert(std::make_pair(342,343));um.insert(std::make_pair(142,143));um.insert(std::make_pair(242,243));for(autoe:um)std::cout这打印:24234242142现在我可以使用um.begin()->first或um.begin(0)->first访问242。可以使用um.begin(1)->firs

Java 内联 int 交换。为什么这只适用于 Java

我被要求在不使用临时变量或不使用xor的情况下编写交换,我想到了这个。在Java中,这是可行的,但在C/C++中,这是行不通的。我的印象是这总是有效的,因为'|'左侧的'a'的值将存储在一个寄存器中,然后对“a”的赋值将抵消对“b”的赋值的影响。inta=5;intb=-13;b=a|(0&(a=b)); 最佳答案 您正在修改一个变量并在没有插入序列点的情况下读取它的值。b=a+0*(a=b);//readinga'svaluemodifyinga这是未定义的行为。您无权对代码的作用抱有任何期望。

c++ - 枚举值 (int) 到类型的动态映射

看来这个问题在我们的工作中很常见。我们通过网络发送一个int或enum值,然后我们收到它,我们想创建/调用一个特定的对象/函数。最简单的解决方案是使用switch语句,如下所示:switch(value){caseFANCY_TYPE_VALUE:returnnewFancyType();}它工作正常,但我们会有很多这样的开关block,当我们创建新的值和类型时,我们需要更改所有这些。这似乎是对的。其他可能性是使用模板。但我们不能,因为枚举的值是在运行时定义的。是否有任何正确的设计模式或任何正确的方法?这似乎是每天编码中一个非常普遍和普遍的问题......

c++ - 返回 NULL 但出现错误 C2440 : 'return' : cannot convert from 'int' to 'const &'

我有一个方法如下classBuildOrderStrategy{public:virtualconstUrgency&getUrgency()=0;...}下面是哪个实现constUrgency&RandomBuildOrderStrategy::getUrgency(){returnNULL;}但是在编译时我得到了这个错误errorC2440:'return':cannotconvertfrom'int'to'constUrgency&'此时我真的很想从getUrgency方法返回一个NULL值。所以..我的代码有什么问题?我该如何解决?我来自Java世界,在那里这是完全可能的..紧

C++,使用 vector<int[2]> 我可以 push_back({someNum1,someNum2}) 吗?

我有vector:vectorstoreInventory;//storeInventory[INDEX#]{ITEMNUM,QUANTITY}我想使用push_back()方法将新数组添加到库存vector。类似这样的东西:constintORANGE=100001;constintGRAPE=100002storeInventory.push_back({GRAPE,24});storeInventory.push_back{ORANGE,30};但是,当我尝试使用上面的语法时,出现错误Error:excpetedanexpression。我正在尝试的是不可能的,还是我只是以错误的

c++ - C++ 中 string 和 int 的函数模板

我想要一个函数模板,它接受一个vector和一个元素,并返回该元素在vector中的位置。我希望此函数适用于int和std::string类型。这是函数模板定义:templateintfindElement(constvector&vec,constT&ele){for(size_ti=0;i如您所见,我最初正在检查类型,以便我可以使用适当的比较方法。当我使用std::string类型参数调用时,这工作正常,但当我将它与double类型一起使用时,它会出现以下错误:errorC2228:leftof'.compare'musthaveclass/struct/union和seerefe

c++ - "vector<pair<int,int>> q;"和 "vector<pair<int,int>> q;"有什么区别

这个问题在这里已经有了答案:Templateissuewithvector[duplicate](2个答案)关闭7年前。前者出现编译错误,但后者工作正常。error:‘>>’shouldbe‘>>’withinanestedtemplateargumentlist谢谢

c++ - "int &&"和 "auto &&"之间的不同行为

在C++11中,如果我尝试这样做:intx=5;int&&y=x;它将无法编译,并出现一个错误,提示右值引用无法绑定(bind)到左值。但是如果我这样做:intx=5;auto&&y=x;它编译没有错误。为什么会这样?我试图获取y的类型,但typeid()带走了引用属性。auto&&是否根据分配的内容自动折叠为&或&&? 最佳答案 在第一种情况下int&&y,变量y只能绑定(bind)到rvalue,x是不是。在第二种情况下auto&&y但是,变量y可以绑定(bind)到任何东西,因为无论如何都会推导出y的类型—并且将相应地应用引用

c++ - (C++) INT_MAX 和 INT_MIN 无法解析?

我目前正在www.udemy.com上C++类(class)在其中一节课中,老师正在使用#include演示一个整数可以拥有的最大整数个数。但是,当我去包括限制时,一切顺利,直到我尝试打印INT_MAX和INT_MIN以查看最大整数和最小整数。这是我的代码:#include#includeusingnamespacestd;intmain(){cout旁注:我在Windows10上使用EclipseNeonCDT和MinGW编译器。 最佳答案 你想要#include或,不是. 关于c++

c++ - 断言 unsigned int a indeed positive 不起作用?

我想将两个数相乘,并且我知道我的数总是正数,那么:unsignedintmulPositiveNumbers(unsignedinta,unsignedintb){assert(a>0);assert(b>0);return(a*b);}现在,我正在使用断言告诉自己“给定的数字总是正数”。但是当我运行时:intmain(){unsignedintres=mulPositiveNumbers(-4,3);//morestuffgoeshere}即使我使用的是负数,代码也不会失败。为什么? 最佳答案 因为a和b是无符号的,所以它们永远不