草庐IT

c++ - std::map<string,int> 值的默认初始化

这个问题在这里已经有了答案:std::mapdefaultvalueforbuild-intype(4个答案)关闭6年前。这段代码看起来运行良好,它们的默认值value_type(int)为0;它适用于所有情况吗?std::mapw;for(constauto&t:str)w[t]++;双呢?map?默认0.0?

c++ - 为什么 while(int) 在 int = 0 时结束?

我试图在C++中找到与Java的in.hasNextInt等效的输入,我找到了这个。#include#includeintmain(){std::vectormyvector;intmyint;std::cout>myint;myvector.push_back(myint);}while(myint);std::cout但我真的不明白为什么当输入为0时输入循环会停止。它有while(myint)循环,这也让我感到困惑,因为myint是整数而不是boolean值。当我们为myint输入其他内容时,它可能会作为boolean值工作,但我认为0仍然可以作为整数。任何人都可以向我解释一下吗?

c++ - "new int[];"是做什么的?

这行代码做了什么?newint[];根据我的编译器反汇编(VC++2012),它的作用与:newint[0];但它是C++标准规定的吗?这是合法的指示吗? 最佳答案 表达式newint[]对C++11无效(我没有检查C++14)。对于单个[],语法需要一个(隐式转换为)整数类型expression在方括号之间,表示所需的数组大小。请注意,此大小不必是常量:在抽象的底层,这就是您在C++中分配动态数组的方式。C++11(通过N3290最终草案)§5.3.4/6:”Everyconstant-expressioninanoptr-new

c++ - "long"和 "long int"之间的区别,abs & labs

这可能只是cplusplus.com处符号的不一致。,但是C++中的“longint”和“long”类型有区别吗?cplusplus.com说abs接受“int”和“long”类型的输入,而labs使用“longint”。我认为这基本上是一个错字。如果是这样,那么abs和labs之间的唯一区别是保证labs返回long吗? 最佳答案 long和longint没有区别。我们有abs(long)和labs(long)(两者是等价的)的原因是labs()是一个C库的残余。C没有函数重载,所以函数abs()只能采用一种类型(int)并且必须

c++ - 为什么 int a[5] = {0} 和 int a[5]={1} 之间的区别(缺失特征)

按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭11年前。当我们像这样初始化数组时inta[5]={0},编译器将所有5个元素设为0。这非常好,紧凑的初始化和有用的功能。但我想知道为什么编译器没有类似地初始化inta[5]={1}?为什么它不使所有5个元素都为1?为什么标准不强制执行它?这不是一个很棒的功能吗?是不是不见了?此外,如果初始化器中的元素数量小于数组的大小,则编译可以使用初始化器中的最后一个元素初始

c++ - 使用 STL/Boost 初始化硬编码集<vector<int>>

像这样question已经问过,我想使用STL初始化一个容器,其中元素以最干净的方式进行硬编码。在这种情况下,元素是一个双重嵌套的容器:set>A;我想(例如)将以下值放入:A=[[0,0,1],[0,1,0],[1,0,0],[0,0,0]];C++0x很好,使用g++4.4.1。STL更可取,因为我不对代码的任何其他部分使用Boost(尽管我不介意用它举例!)。 最佳答案 这确实使用了g++4.4.1,带有-std=c++0x#include#includeusingnamespacestd;intmain(){set>A={{

c++ - 函数返回指向 int 的指针

当调用add(4)时,我的main()崩溃了。据我了解int*add,它应该返回一个指向整数的指针。那么,我主要可以说:int*a=add(3);返回一个指向int的指针。请解释我做错了什么。#include#includeusingnamespacestd;int*add(inta){int*c,d;d=a+1;*c=d;cout 最佳答案 问题是您已经声明了一个int*但没有给它任何指向的东西。你需要做的是用内存位置初始化它(省略错误检查)int*c=newint();...*c=d;//Nowworks稍后您需要确保释放此内存

c++ - c++中std::min(int)的效率

我的代码中有一个迭代1亿次的循环(需要模拟模型的1亿次复制)。对于1亿次迭代中的每一次,我通过索引名为age的整数变量从数组(myarray)中检索一个值。由于数组的长度,只对age=0,...,99索引myarray[age]有效。但是,age的实际域是0,...,inf。所以,我有以下功能inttidx(constint&a){returnstd::min(a,99);}允许通过myarray[tidx(age)]进行索引。我怎样才能更有效地做到这一点?[性能输出低于]构建说明我正在使用的编译器标志的源文件的示例:Buildingfile:../SAR.cppInvoking:GC

c++ - 为什么尽管有一个 int vector ,但结构的大小不变

我定义了一个包含整数vector的结构。然后我在vector中插入10个整数并检查结构的大小。但我看不出有什么不同。这是我的代码:structdata{vectorpoints;}intmain(){datad;cout在这两种情况下,我得到相同的结果:16为什么会这样?struct的大小不应该增长吗? 最佳答案 vector会将其元素存储在动态分配的内存中(在堆上)。在内部,这可能表示为:T*elems;//Pointermemory.size_tcount;//Currentnumberofelements.size_tcapa

c++ - 查找 int [] 数组的大小

在下面的函数中,我们如何找到数组的长度intfnLenghthOfArray(intarry[]){returnsizeof(arry)/sizeof(int);//Thisalwaysreturns1}这里这个函数总是返回1。其中,sizeof(arry)/sizeof(int)在声明它的函数中给出数组的实际长度。如果我们像这样使用vector或模板templateintfnLenghthOfArray(T(&arry)[N]){}我们可以得到尺寸。但是这里我不允许更改函数原型(prototype)。请帮我找到这个。 最佳答案 请