向量 vector库
个人整理的c++中关于vector的基本用法(适合初学者),较为详细,还请各位大佬指点~(目前个人学习c++时间不长)
初始化
vetcor<int>v; //创建一个空向量存储int
vector<float>v1(3); //创建一个向量存储3个int
vector<char>v2(3,'a'); //创建一个向量存储3个char类型的'a'
vector<char>v3(v2); //创建一个向量存储向量v2
vector<int> c1{1,2,3}; //一维vector直接赋值
vector<vector<int>> c2{{1,2,3},{4,5,6}}; //二维vector直接赋值
相关函数
访问头尾
v.begin()
v.end()
遍历
for(auto i:v)
for(i=v.begin();i<v.end();i++)
for(i = 0; i < 5; i++){
cout << "value of v [" << i << "] = " << v[i] << endl;
}
// 使用迭代器 iterator 访问值
vector<int>::iterator vec = v.begin();
while( vec != v.end()) {
cout << "value of vec = " << *vec << endl;
vec++;
}
求长度
v.size()
遍历中使用
for(int i=0;i<v.size();i++){
cout<<v[i];
}
添加元素
v.push_back(1); //于向量v尾部添加元素1
v2.insert(v2.begin()+i,x); //于向量v2下标为i的元素前插入元素x
删除元素
v.pop_back(); //删除v尾巴
v.erase(v.begin()+i); //删除v下标为i的元素
v.erase(v.begin()+i,v.begin()+j); //删除v下标为[i,j)范围的元素
v.clear(); //删除v中所有元素
移位操作
sort(v.begin(),v.end); //将v中元素从小到大排序
sort(v.begin(),v.end,cmp); //将v中元素按cmp函数排序
reverse(v.begin(),v.end()); //将v中的元素颠倒
swap(v,v1); //交换v与v1的所有元素
相关判断
if(v.empty()){} //判断v是否为空
if(v==v1){} //判断v与v1是否相等
与指针
vector<int>k{1,2,3};
vector<int>*p;
p=&k;
for (int i = 0; i < p->size(); i++){
cout << p->at(i) << ' ';
}
//1 1 1
vector<int>* p = new vector<int>{ 1,2,3 };
vector<int> k{ 4,5,6 };
p = &k;
for (int i = 0; i < p->size(); i++) {
cout << p->at(i) << ' ';
}
//4 5 6
vector<int>* p;
p = new vector<int>{ 1,2,3 };
for (int i = 0; i < p->size(); i++){
cout << p->at(i) << ' ';
}
//1 2 3