vector 的用法(c++)

vertor是向量类型,它是一个对象实体。它作为容器可以容纳不同的实体,如int,flout,double,还有类类型。

1.包含头文件 #include <vector>

2.声明:vector<int> vet;

3.定义:

vector<int> a(10);//定义了10个整数的向量,没有给初值,值不确定
vector<int> b(10,1);//定义10个整数的向量,每个元素初值都是1
vector<int> c(b);//用另一个向量创建新向量
vector<int> d(b.begin(),b.begin()+3);//从b向量0到2元素的向量

int arr[7]={1,2,3,4,5,6,7};
vector<int> va(arr,arr+7);//从数组创建向量

4.遍历:

遍历有两种方式,一个是用下标遍历,类似数组,还有就是使用迭代器遍历,代码如下:

//遍历:
for(int i=0;i<a.size();i++){
    cout<<a[i]<<"  ";
} 
cout<<endl;

vector<int>::iterator it;
for(it=b.begin();it!=b.end();it++){
    cout<<*it<<"  ";
}
cout<<endl;

5.在结尾处添加元素:va.push_back(8);

6.删除结尾的元素:va.pop_back();

7.查看向量的大小:va.size();

8.查看向量是否为空:va.empty();

9.插入元素:va.insert(va.begin()+3,10);

10.删除某个元素:va.erase(va.begin()+3);

10.清空所以元素:va.clear()

算法: 包含头文件 #include <algorithm>

1.sort(va.begin(),va.end()), 对向量进行排序。默认为从小到大。

2.reverse(va.begin(),va.end()),对向量进行翻转

代码:

#include <iostream>
#include <vector>
#include <algorithm> 
using namespace std;

void print_vec(vector<int> & a){
    vector<int>::iterator it;
    for(it=a.begin();it!=a.end();it++){
        cout<<*it<<"  ";
    }
    cout<<endl;
}

int main(){

vector<int> a(10);//定义了10个整数的向量,没有给初值,值不确定
vector<int> b(10,1);//定义10个整数的向量,每个元素初值都是1
vector<int> c(b);//用另一个向量创建新向量
vector<int> d(b.begin(),b.begin()+3);//从b向量0到2元素的向量

int arr[7]={1,2,3,4,5,6,7};
vector<int> va(arr,arr+7);//从数组创建向量

//遍历:
for(int i=0;i<a.size();i++){
    cout<<a[i]<<"  ";
} 
cout<<endl;

vector<int>::iterator it;
for(it=b.begin();it!=b.end();it++){
    cout<<*it<<"  ";
}
cout<<endl;

va.push_back(8);
print_vec(va);

va.pop_back();
print_vec(va);

a.assign(va.begin(),va.begin()+3);
print_vec(a);

a.assign(8,4);
print_vec(a);

a.clear();
cout<<"clear"<<endl;
print_vec(a);
 
 if(a.empty()) cout<<"empty"<<endl;
 
 a.resize(10);
 print_vec(a);
 a.clear();
 a.resize(10,2);
 print_vec(a); 
 
 //插入删除元素
 cout<<"插入和删除:"<<endl; 
 va.insert(va.begin()+3,10);//在该位置插入对应的元素 
 print_vec(va); 
 va.erase(va.begin()+3);//删除该位置的元素 
 print_vec(va); 
 
 if(a==b) cout<<"equal"<<endl;
 
 cout<<"size:"<<va.size()<<"front: "<<va.front()<<" back:"<<va.back()<<endl;
 
 //算法
 reverse(va.begin(),va.end());
 print_vec(va);
 
 sort(va.begin(),va.end());
 print_vec(va); 
 
return 0;
}

 
原文地址:https://www.cnblogs.com/yuqt/p/6008856.html