C/C++基础— —vector基本操作
C++ STL(标准模板库)是一套功能强大的 C++ 模板类,提供了通用的模板类和函数,这些模板类和函数可以实现多种流行和常用的算法和数据结构,如向量vector、链表list、队列queue、栈stack。
前言
vector不是一种数据类型,而只是一个类模板,可用来定义任意多种数据类型。vector类型的每一种都指定了其保存元素的类型。因此,vector和vector 都是数据类型。
一、基本知识
1.vector对象的定义和初始化
定义 | 含义 |
---|---|
vector<‘T> v1 | vector保存类型为T的对象。默认构造函数v1为空。 |
vector<‘T> v2(v1) | 将v1中的元素拷贝到v2 |
vector<‘T> v3(n, i) | v3包含n个值为i的元素。 |
vector<‘T> v4(n) | v4含有n个默认值 |
vector对象动态增长
2.vector的操作
操作 | 含义 |
---|---|
v1 = v2 | 将v2中的元素拷贝到v1 |
v.empty() | 是否为空 |
v.size() | 输出大小 |
v.push_back() | 在末尾插入元素 |
v.insert(it,value) | 在迭代器it之前插入值value |
v.pop_back() | 删除末尾的元素 |
v.erase(it) | 删除迭代器it所指向的元素 |
v.clear() | 清空vector中的所有元素 |
3.代码示例
vec.insert(vec.begin(),10);//在开始插入10
//在0之前插入11
for(vector<int>::iterator it = vec.begin(); it != vec.end(); it++) {
if ( *it == 0) {
vec.insert(it, 11);
break;
}
}
//vec.erase(it)举例
int i = 0;
for (vector<int>::iterator it = vec.begin(); it != vec.end(); it++){
i++;
if (i == 2) {
vec.erase(it);
break;
}
}
//利用下标遍历
for (int i = 0; i != vec3.size(); i++) {
cout<<"cccc"<<vec3[i]<<endl;
}
#include<iostream>
#include<vector>
using namespace std;
int main(){
vector<int> vec;
int i;
for (int i = 0; i < 5; i++){
vec.push_back(i);
}
vector<int>::iterator it = vec.begin();
while (it != vec.end()) {
cout<<"aaaa"<< *it<<endl;
it++;
}
vector<int> vec2(vec);
cout<<"vec2.size()"<<vec2.size()<<endl;
for (vector<int>::iterator it2 = vec2.begin(); it2 != vec2.end(); it2++) {
cout<<"bbbb"<< *it2<<endl;
}
vector<int> vec3;
vec3 = vec2;
vec2.push_back(5);
cout<<"vec2.size()"<<vec2.size()<<endl;
for (vector<int>::iterator it3 = vec3.begin(); it3 != vec3.end(); it3++) {
cout<<"cccc"<< *it3<<endl;
}
vector<int> vec4;
for (int i = 0; i < 5; i++) {
vec4.push_back(i);
}
vec4.insert(vec4.begin(),10);//在开始插入10
//在0之前插入11
for(vector<int>::iterator it = vec4.begin(); it != vec4.end(); it++) {
if ( *it == 0) {
vec4.insert(it, 11);
break;
}
}
for (vector<int>::iterator it = vec4.begin(); it != vec4.end(); it++) {
cout<<"dddd"<< *it<<endl;
}
// vec4.clear();
cout<<"vec4.size()"<<vec4.size()<<endl;
for (int i = 0; i != vec3.size(); i++) {
cout<<"cccc"<<vec3[i]<<endl;
}
return 0;
}