![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
C++
文章平均质量分 50
lizi0403
这个作者很懒,什么都没留下…
展开
-
++i和i++的区别
而对于自定义的数据类型,就会有很大差别,C++中最典型的就是在STL中有关迭代器 iterator 的操作都是 ++i 的;对于内置数据类型(如int,char,指针等),编译器会有优化,所以 ++i 和 i++没有太大区别;所以只要没有强制的要求,就使用 ++i,反正效率提一点算一点,就用最好的;i++ 多出来一步,因为它是先使用当前值后加1,所以需要一个。,尤其在处理大量自定义类型的数据时会更明显。++的重载,这里执行效率上就有了些区别;i++是先返回结果再自增。在C++中,它俩都用了。原创 2023-06-24 21:08:18 · 97 阅读 · 0 评论 -
c++ vector的扩容机制
resize修改size大小,如果resize指定的大小n小于当前size,将多出来的元素删去;如果n大于capacity,将扩容到n。1、当向vector push_back一个元素时,如果此时元素个数超过了vector的容量,会触发扩容。空间浪费可能会比较高,比如:扩容后申请了64个空间,但只存了33个元素,有接近一半的空间没有使用。5、vector的size()、capacity()、resize()和reserve()2、扩容的过程是:开辟新空间->拷贝旧空间的元素->释放旧空间。原创 2023-06-21 16:10:40 · 2299 阅读 · 0 评论 -
bool operator<(const Stru& b) const中的const作用
第一个const保证对象b(的成员变量)在函数内不被修改第二个const保证函数不会修改本对象(调用该函数的对象)的成员变量原创 2021-10-29 10:55:14 · 832 阅读 · 0 评论 -
c++如何输入带空格的字符串
scanf函数一般格式为scanf(“%s”,st),但scanf默认回车和空格是输入不同组之间的间隔和结束符号,所以输入带空格,tab或者回车的字符串是不可以的。当输入字符串时,字符“c”将被当作当前输入的结束符。例如:scanf("%[a-z A-Z0-9]",str)表示只匹配输入是大小写字母和数字,遇到非数字和字母时输入结束。可以无限读取,以回车结束读取,C语言中的函数,在C++中运行会产生bug。cin.getline()函数可以同cin.get()函数类似,也可接收空格,遇回车结束输入。转载 2023-04-20 16:16:56 · 4887 阅读 · 2 评论 -
c++ 默认移动构造函数什么时候会自动生成以及它内部实现
而在没有自定义移动构造函数/移动赋值函数的情况下,如果该类自定义了拷贝构造函数/赋值运算符或析构函数之一,都不会生成默认移动构造函数,只会调用拷贝构造函数/赋值运算符(前提是形参为const T&而不是T&,因为const T&可以兼容右值实参,而T&不能)。注意即使没有自定义拷贝构造函数/赋值运算符,只自定义了析构函数,也不会生成默认移动构造函数,这是因为自定义析构函数表明该类在析构时可能需要回收内存,如果生成了默认移动构造函数可能会出错(比如同一地址被释放两次的错误)二、默认移动构造函数内部实现。原创 2023-06-11 18:14:27 · 1582 阅读 · 2 评论