做软装设计能用到的网站有哪些,七星网络网站,公司网站域名如何备案,阿里云wordpress在哪里设置密码以下内容仅为当前认识#xff0c;可能有不足之处#xff0c;欢迎讨论#xff01; 文章目录 构造函数赋值操作容量和大小插入和删除数据存取互换容器预留空间 构造函数
vector函数是常用数据结构#xff0c;见于刷题网站。
它是单端数组#xff0c;与普通数组区别在于可以… 以下内容仅为当前认识可能有不足之处欢迎讨论 文章目录 构造函数赋值操作容量和大小插入和删除数据存取互换容器预留空间 构造函数
vector函数是常用数据结构见于刷题网站。
它是单端数组与普通数组区别在于可以动态扩展。
动态扩展是编译器自动的不是在原空间之后续接新空间而是找更大的内存空间将原数据拷贝新空间释放原空间。 vector容器迭代器支持随机访问。
目前介绍四种vector的构造函数。
①vectorT v;②vector(v.begin() , v.end());③vector(n,elem);④vector(const vector vec);
第①种创建一个普通的vetcor容器容器元素为T需要用其他方式对v赋值。
第②种将[v.begin(),end()]区间元素拷贝给本身。
第③种将n个elem个元素拷贝给本身。
第④种将其他vector容器拷贝给自身。
代码示例
void printVector(vectorint v) {cout 当前vector元素为;for (vectorint::iterator front v.begin(); front ! v.end(); front) {cout *front ;}cout endl;
}void test0409() {vectorint v;v.push_back(1);v.push_back(2);v.push_back(3);printVector(v);vectorint vs(v.begin(), v.end());printVector(vs);vectorint vss(3, 5);printVector(vss);vectorint vsss(vs);printVector(vsss);
}运行结果 赋值操作
给vector容器赋值。
目前介绍的函数有
①vector operator(const vector vec);②assign(beg , end);③assign(n ,elem);
第①种方法是用另一个vector容器直接赋值。
第②种方法是调用vector.assign()函数对其赋值。
第③种方法是调用vector.assign()函数给容器n个elem元素。
代码示例
void printVector(vectorint v) {cout 当前vector元素为;for (vectorint::iterator front v.begin(); front ! v.end(); front) {cout *front ;}cout endl;
}
void test0409a() {vectorint v;for (int i 0; i 5; i) {v.push_back(1i * i*i - i*i);}printVector(v);vectorint v2 v;printVector(v2);vectorint v3;v3.assign(v2.begin(), v2.end());printVector(v3);vectorint v4;v4.assign(3, 5);printVector(v4);
}运行结果 容量和大小
vector容器的大小和容量相关操作
目的函数判断容器是否为空empty();容器的容量真实的占用空间大小capacity();容器的个数常用size();重新指定容器长度为num若容器变长则默认值填充新位置。若容器变短则末尾容器长度被删除。resize(int num);重新指定容器长度为num若容器变长则默认值填充新位置。若容器变短则末尾超出容器长度被删除。resize(int num , elem);
代码示例
void printVector(vectorint v) {cout 当前vector元素为;for (vectorint::iterator front v.begin(); front ! v.end(); front) {cout *front ;}cout endl;
}
void test0409b() {vectorint v;cout 容器是否为空?- v.empty() . endl;for (int i 0; i 5; i) {v.push_back(i i * i * i - i * i);}printVector(v);cout 容器是否为空?- v.empty() . endl;cout 容器容量大小 v.capacity() . endl;cout 容器个数 v.size() . endl;v.resize(2);printVector(v);cout 容器容量大小 v.capacity() . endl;cout 容器个数 v.size() . endl;v.resize(5, 5);printVector(v);cout 容器容量大小 v.capacity() . endl;cout 容器个数 v.size() . endl;}运行结果 插入和删除
vector容器插入操作删除操作
介绍有以下几个函数
插入
目的函数尾部插入元素elepush_back(ele);迭代器指向位置pos插入元素eleinsert(const_iterator pos , ele);迭代器指向位置pos插入n个元素eleinsert(const_iterator pos , int count , ele);
删除
目的函数删除最后一个元素pop_back();删除迭代器指向的元素erase(const_iterator pos);删除迭代器从start到end的元素erase(const_iterator start , const_iterator end);删除容器中所有元素clear();
代码示例
void printVector(vectorint v) {cout 当前vector元素为;for (vectorint::iterator front v.begin(); front ! v.end(); front) {cout *front ;}cout endl;
}
void test0409c() {vectorint v;for (int i 0; i 5; i) {v.push_back(-i i * i * i i * i);}cout 最开始vector endl;printVector(v);cout 尾部插入一个元素5 endl;v.push_back(5);printVector(v);cout 在2号位置插入一个元素7 endl;vectorint::iterator it v.begin();//开始(it);//第2个位置v.insert(it, 7);printVector(v);cout 向倒数第二个位置插入3个元素6 endl;vectorint::iterator end v.end();end--;v.insert(end, 3, 6);printVector(v);cout 删除最后一个元素 endl;v.pop_back();printVector(v);cout 删除当前首个元素 endl;v.erase(v.begin());printVector(v);cout 全删除 endl;v.erase(v.begin(),v.end());printVector(v);cout 删除所有元素 endl;//v.clear();cout 当前数组是否为空 v.empty() . endl;}注意迭代器使用一次后会失效。
运行结果 数据存取
对vector中的数据进行存取操作。
目的函数返回索引index所指的数据at(int index);返回索引index所指的数据operator[];返回容器中第一个数据元素front();返回容器中最后一个数据元素back();
代码示例
void printVector(vectorint v) {cout 当前vector元素为;for (vectorint::iterator front v.begin(); front ! v.end(); front) {cout *front ;}cout endl;cout endl;
}void test0409d() {vectorint v;for (int i 0; i 5; i) {v.push_back(-i i * i * i i * i);}cout 最开始vector endl;printVector(v);cout 取出索引为3的数据 endl;cout v.at(3) endl;cout 第二种方式取出索引为3的数据 endl;cout v[3] endl;cout 返回容器第一个元素 endl;cout v.front()endl;cout 返回容器中最后一个数据 endl; cout v.back();
}运行结果 互换容器
两个容器元素互换。——swap(vec);
代码示例
void printVector(vectorint v) {cout 当前vector元素为;for (vectorint::iterator front v.begin(); front ! v.end(); front) {cout *front ;}cout endl;cout endl;
}
void test0409e() {vectorint v1;for (int i 0; i 5; i) {v1.push_back((i i * i * i)/3 i * i);}printVector(v1);vectorint v2;for (int i 0; i 4; i) {v2.push_back((i - i * i * i) / 2 i * i);}printVector(v2);v1.swap(v2);printVector(v1);printVector(v2);
}运行结果 预留空间
目的减少vector在动态扩展容量时的扩展次数。
函数reserve(int len);
容器预留len个元素长度预留位置不初始化元素不可访问。
代码示例
想要在容器中插入十万条数据看共开辟多少次空间。
void test0409f() {int num 0;vectorint v;int* pNULL;for (int i 0; i 10000000; i) {v.push_back(i);//p v[0];if (p ! v[0]) {p v[0];num;}}cout 一共开辟了 num 次空间 endl;
}
运行结果 但是如果有预留空间次数会大大减少。
在第5行插入v.reserve(1000000); 以上是我的学习笔记希望对你有所帮助 如有不当之处欢迎指出谢谢