草庐IT

弱引用

全部标签

c++ - 引用 set for c++ 中的最大/最小 int

假设我有以下使用C++中的集合的示例:seta;for(inti=0;i如何找到上面显示的集合示例的最大值和最小值?理想情况下,我认为以下内容会起作用,但会出现以下错误:error:cannotconvert'std::_Rb_tree_const_iterator'to'int'inassignment我正在使用以下函数来尝试获取最大值/最小值:min=a.begin();max=a.end(); 最佳答案 首先,begin和end返回迭代器,需要对(*)进行间接寻址,得到它们指向的元素在.其次,end返回尾后迭代器,因此实际上并

c++ - 引用哪个地方没有引用?

以下代码片段:intia[3][4]={0,1,2,3,4,5,6,7,8,9,10,11};int(&row)[4]=ia[1];我不明白为什么这个特定代码是有效的。对于我目前的理解,我没有合理的解释。有人可以帮我解决这个问题吗?我的问题是&row似乎没有引用任何地方。我唯一的解释是这必须是有效的,因为它是一个初始化。我从我的书中得到了以下解释:....wedefinerowasareferencetoanarrayoffourints哪个数组?我们要初始化的那个? 最佳答案 intia[3][4]={0,1,2,3,4,5,6,

c++ - C++ 对象引用的行为

考虑以下代码段:classWindow//BaseclassforC++virtualfunctionexample{public:virtualvoidCreate()//virtualfunctionforC++virtualfunctionexample{coutaRef和bRef都分配了*button,但为什么这两个输出不同。赋值给引用类型和非引用类型有什么区别? 最佳答案 你遇到了切片问题。WindowbRef=*button;这里bRef不是引用而是对象。当您将派生类型分配给bRef时,您将派生部分切掉,只剩下一个从Co

c++ - 编译器是否优化对常量变量的引用?

当谈到C和C++语言时,编译器是否优化了对常量变量的引用,以便程序自动知道所引用的值是什么,而不必查看常量变量的内存位置?说到数组,是否取决于数组中指向的索引值在编译时是否为常量?例如,看一下这段代码:intmain(void){1:chartesst[3]={'1','3','7'};2:charerm=tesst[1];}编译器是否在编译时将第2行“更改”为“charerm='3'”? 最佳答案 我个人希望发布的代码变成“无”,因为两个变量都没有实际使用,因此可以删除。但是,是的,现代编译器(gcc、clang、msvc等)应该

c++ - 关于C++0x引用崩溃的问题

我不知道为什么这些代码无法编译。我已经在Visualc++2010和gcc中使用-std=c++0x进行了测试。有人给点建议吗?谢谢!templateclassFoo{public:voidtest(constT&){coutf;}编译错误:'voidFoo::test(T)':成员函数已经定义或声明但是为什么这个可以编译呢?templatevoidfoo(constT&){coutvoidfoo(T&){cout(a);}我读过c++0x文章说:T&&==T&,所以constT&&==constT&? 最佳答案 i'vreadc+

c++ - 什么时候通过引用传递不是一个好主意?

这是一个我从未真正理解过的内存分配问题。voidunleashMonkeyFish(){MonkeyFish*monkey_fish=newMonkeyFish();std::stringlocalname="Wanda";monkey_fish->setName(localname);monkey_fish->go();}在上面的代码中,我在堆上创建了一个MonkeyFish对象,为其分配了一个名称,然后将其释放到世界上。假设已分配内存的所有权已转移到MonkeyFish对象本身-只有MonkeyFish本身会决定何时死亡和删除自己。现在,当我在MonkeyFish类中定义“name

c++ - 对象如何按值或按引用传递给 C++ 函数?

来自C#,其中类实例通过引用传递(即,当您调用函数时传递引用的拷贝,而不是值的拷贝),我想知道这是如何工作的C++。在下面的例子中,_poly=poly,是将poly的值复制到_poly,还是什么?#includeusingnamespacestd;classpolynomial{vector_poly;public:voidSet(vectorpoly);};voidpolynomial::Set(vectorpoly){_poly=poly; 最佳答案 poly的值将被复制到_poly中——但您将在此过程中制作额外的拷贝。更好的

c++ - 为什么 operator= 返回引用而不是 const 引用

最初的问题与重载operator=有关,我想分享我的发现,因为找到它们对我来说很重要。我无法想象将(a=b)用作左值的合理示例。在IRC和谷歌的帮助下,我找到了下一篇文章:http://msdn.microsoft.com/en-us/magazine/cc301415.aspx它提供了两个示例。(a=b)=cf(T&);f(a=b)但两者都不太好,我认为这是不好的做法。第二个给我同样的感觉。您能否提供更多好的示例,说明为什么它应该是非常量? 最佳答案 一个很好的理由是标准中要求类X在标准容器中可用的要求之一是表达式a=b必须具有类

C++引用、内联函数、auto关键字介绍以及C++中无法使用NULL的原因

文章目录一、引用1.1引用概念1.2引用特性1.3常引用1.4使用场景1.4.1做参数1.4.2做返回值1.5引用和指针的区别1.6小结一下二、内联函数2.1内联的概念2.2内联的特性2.3【面试题】三、auto关键字(C++11)3.1类型别名思考3.2auto简介四、auto的使用细则4.1基于范围的for循环(C++11)4.2范围for的使用条件五、指针空值nullptr(C++11)一、引用1.1引用概念C++是C语言的继承,它可进行过程化程序设计,又可以进行以抽象数据类型为特点的基于对象的程序设计,还可以进行以继承和多态为特点的面向对象的程序设计。引用(reference)就是C+

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::