string和vector是两种最重要的标准库类型,string表示可变长的字符序列,vector存放的是某种给定类型对象的可变长序列。 一、标准库类型string 1.定义和初始化string对象:初始化string对象的方式有 string s1 默认初始化,s1是一个空串string s2(s1) s2是s1的副本 string s2=s1 等价于s2(s1),s2是s1的副本 string s3...
vector<int> a(n);//初始化n个元素的向量 vector<int> a(n,x);//初始化n个元素的向量,每个元素是x vector<int> a = {1,2,3,4,5};//支持数组声明的方法,自动创建 //二维 vector<vector<int>> matrix(n,vector<int>(m));//m*n的矩阵 其他的构造方式 拷贝构造:传入其他vector引用 区间拷贝:...
char *转string,直接将char *传入string的构造方法中即可生成相应的string对象。 下面是string的初始化,赋值和取值操作 // string的初始化voidTest1(){strings1;// 无参构造,为空字符串strings2(10,'a');strings3("hello");strings4(s3);// 拷贝构造cout << s1 << endl; cout << s2 << endl; cout ...
vector之所以被认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。 vector<string>是字符串容器 比如vector<string> s[2] 这句话的意思就是定义了一个字符串容器,里面可以存放2个字符串 而且string只是定义一个字符串。 类似的还有vec...
在STL 中,拥有 capacity 属性的容器只有 vector 和 string。 针对capacity 这个属性,STL 中的其他容器,如 list map set deque,由于这些容器的内存是散列分布的,因此不会发生类似 realloc() 的调用情况,因此我们可以认为 capacity 属性针对这些容器是没有意义的,因此设计时这些容器没有该属性。
vector 和 string 的自动增长机制: 分配:分配一块大小为当前容量的某个倍数的新内存。vector 和 string 一般为 2. 把容器的所有元素从旧的内存复制到新的内存。 析构掉旧内存中的对象。 释放旧内存。 size():告诉你该容器中有多少个元素。 capacity():告诉你该容器利用已经分配的内存可以容纳多少个元素。这是...
或是出于开发效率或是出于其他原因,vector和string可以使你不必承担这些责任,vector和string会自己管理内存(RAII方法,详见Effective C++条款13),当他们被析构时,会自动析构容器中元素的内存。 而且vector和string是功能完全的STL序列容器,有很多的成员方法、迭代器及<algorithm>中的算法都可以使用。
一、vector和string优于动态分配的数组 当你决定用new动态分配内存时,这意味着: 确保有delete操作,否则会导致内存泄漏 确保正确使用了delete形式,new-delete,new[]—delete[]。 必须确保只delete了一次。 vector和string避免了上述情况,因为它们自己管理内存。当元素被加入到容器中时,它们的内存会增长;当vector或string...
在STL 中,拥有 capacity 属性的容器只有 vector 和 string。 针对capacity 这个属性,STL 中的其他容器,如 list map set deque,由于这些容器的内存是散列分布的,因此不会发生类似 realloc() 的调用情况,因此我们可以认为 capacity 属性针对这些容器是没有意义的,因此设计时这些容器没有该属性。
一、学会定义和初始化 string、vector对象 ;二、掌握string、vector对象的操作;🌲一.认识标准库类型 🌲1.标准库类型string 标准库类型string表示可变长的字符串序列,简单说就是用来处理字符串的相关内容,使用的时候必须包含头文件#include<string>。🌲2.标准库类型vector 标准库类型vector表示 对象的集合 ,...