数据结构2
vector 容器,向量
一、 能存放任意类型的动态数组,能增加和压缩数据
注:如果表示向量长度较长(向量内部保存很多数)容易导致泄露,效率很低
二、写法: double Distance(vector< int> & a,vector < int >&b) 其中“ & ”不能少
实例;
vector<int>test; 建立一个vector,int 为数组元素的数据类型,test 为动态数组名
vector < int > test ; //建立一个vector (一维数组)
test.push_back(1);
test.push_back(2); //把1 2 压入vector 中 test [0]是 ‘ 1 ’ test [1]是 ‘ 2 ’
vector<vector<point2f>>points; 定义一个二维数组
points[0].size(); //第一行的列数
1、基本操作
1、头文件: #include<vector>
2、创建vector对象: vector<int> vec;
3、尾部插入数字: vec.push_back(a);
4、使用下标访问元素: cout<<vec[0]<<endl;
5、使用迭代器访问元素 eg:
vector<int>::iterator it;
for( it=vec.begin(); it!=vec.end(); it++ )
{
it=vec.begin(); it!=vec.end(); it++
cout <<*it<<endl;
}
6、插入元素:vec.insert(vec.begin()+i,a); 在i+个元素前插入a
7、删除元素:vec.erase(vec.begin()+2); 删除第3个元素
vec.erase(vec.begin()+i,vec.end()+ j ); 删除区间从[ i,j-1]; 区间从0开始
front() 访问某一个元素(第一个元素) back() 访问最后一个元素
begin() 表示第一个元素 end() 表示最后一个元素
8、向量大小: vec.z=size();
9、清空: vec.clear(); (清空所有元素)
重说明:
vector中元素不仅可为 int double string 还可以为结构体 注意,结构体要定义为全局,否则会出错
三、算法:逆序排序
1、使用 reverse 将元素翻转;需用头文件 #include <algorithm>
eg:
reverse ( vec.begin( ) , vec.end( ) ); 将元素翻转,即 “ 逆至 ”排序
升序排序 sort排序
头文件:#include<algorithm>
sort( vec.begin( ) , vec.end( ) ); 默认升序(从小到大)
降序排序
bool comp (const int &a,const int & b )
{
return a>b;
}
调用降序: sort (vec.begin(), vec.end(),comp)
vector 中的push_back的用法和作用
push_back 简单作用是在字符串结尾插入一个字符
push_back 它在c++中的vector头文件里面
在vector类中它的作用是在此类尾部加一个数据
string中也有它,作用是字符串后插如一个字符
push_back 函数原型
void push_back( value_type_ch );
void push_back (value_type_ch);
参数_ch 意思是“ 这个字符将被添加到字符串末尾
eg:
void push_back (const_ty&_x)
{
insret ( end (),_x ); 在后面添加_x字符
}