vector 中 emplace_back 方法的用途

在写代码的过程中,CLion 提醒我把 push_back 方法替换成 emplace_back 方法: emplace_back 函数的作用是减少对象拷贝和构造次数,是 C++11 中的新特性,主要适用于对临时对象的赋值。 在使用 push_back 函数往容器中增加新元素时,必须要有一个该对象的实例才行,而 empl ... 阅读更多

关于 vector 的扩容机制

往 vector 中添加元素时,如果空间不够将会导致扩容。 vector 有两个属性:size 和 capacity 。 size 表示已经使用的数据容量,capacity 表示数组的实际容量,包含已使用的和未使用的。 vector 扩容规则: 当数组大小不够容纳新增元素时,开辟更大的内存空间,把旧空间上的数据复制过来, ... 阅读更多

STL 中的迭代器失效

一、迭代器失效 向容器添加或者删除元素可能会导致指向容器的指针、引用或者迭代器失效。使用已经失效的指针、引用或者迭代器将会导致程序出现异常,编码过程中一定要时刻注意迭代器失效的场景。 例如,以 vector 为例:

执行以上代码会导致段错 ... 阅读更多

std::string 中 size() 和 length() 的区别

STL 中的 string 类有两个方法 size() 和 length() 用来返回字符串的长度。 两者在实现上没有区别:

     

vector 中 reserve 和 resize 的区别

reserve 方法用来给 vector 预留空间,预留的空间只会改变 capacity 的大小,不会改变 size 大小。 resize 方法表示重新调整数组大小,capacity 和 size 都会改变。 使用 reserve 后,不能直接使用下标来增加元素,虽然内存是已经分配了直接使用不会报错,但是直接通过下标来复制会导 ... 阅读更多

STL 标准类型 vector(一):vector 的基本用法

一、 vector 介绍 标准库类型 vector 用来表示对象的集合,其中所有对象的类型都相同且不固定长度,常被称为 「动态数组」 。 它并不是一个标准的数据类型,而是一个类模板用来实例其他对象,也被称为容器。 使用它需要包含一下头文件和使用声明: [crayon-694f811d319ee398274992 ... 阅读更多

STL 标准库类型 string(一):string 的基本用法

一、概述 标准库类型 string 用来表示可变长的字符串序列,使用它需要包含 string 头文件。 作为标准库的一部分,它被定义在 std 命名空间中,使用前需要加上以下代码:

## string/string.h/cstring 三者的区别 ... 阅读更多