c++学习笔记(三十一)stdvector动态数组
作者:互联网
我们今天只说他是怎么使用的,创建和具体函数我先列出给各位
一、创建向量
Vector<类型>标识符
Vector<类型>标识符(最大容量)
Vector<类型>标识符(最大容量,初始所有值)
int i[5]={1,2,3,4,5};
Vector<类型>vi(I,i+2);//得到i索引值为3以后的值
Vector< vector< int> >v; 二维向量//这里最外的<>要有空格。否则在比较旧的编译器下无法通过
二、内置函数 1.push_back 在数组的最后添加一个数据 2.pop_back 去掉数组的最后一个数据 3.at 得到编号位置的数据 4.begin 得到数组头的指针 5.end 得到数组的最后一个单元+1的指针 6.front 得到数组头的引用 7.back 得到数组的最后一个单元的引用 8.max_size 得到vector最大可以是多大 9.capacity 当前vector分配的大小 10.size 当前使用数据的大小 11.resize 改变当前使用数据的大小,如果它比当前使用的大,则填充默认值 12.reserve 改变当前vecotr所分配空间的大小 13.erase 删除指针指向的数据项 14.clear 清空当前的vector 15.rbegin 将vector反转后的开始指针返回(其实就是原来的end-1) 16.rend 将vector反转构的结束指针返回(其实就是原来的begin-1) 17.empty 判断vector是否为空 18.swap 与另一个vector交换数据
下面我将用代码让各位认识vector的使用。
#include <vector>
#include <iostream>
#include <algorithm>
using namespace std;
//sort降序
bool cmp(int a,int b)
{
return a > b;
}
void vector_learn()
{
//定义一个向量
std::vector <int> vec;
cout << "使用数组输出:" << '\n';
for(int i = 0;i < 10;++i)
{
//在末尾添加一个元素
vec.push_back(i);
cout << vec[i] << ",";//方法一,直接使用数组方式访问
}
//删除一个末尾元素
vec.pop_back();
cout << '\n';
//方法二,使用迭代器将容器中数据输出
vector<int>::iterator it;//声明一个迭代器,来访问vector容器,作用:遍历或者指向vector容器的元素
cout << "使用迭代器输出:" << '\n';
for(it = vec.begin();it != vec.end();it++)
{
cout << *it << " ";
}
cout << '\n';
//取向量容器长度
for(int i = 0;i < vec.size();i++)
{
cout << vec[i] << ",";
}
//清空数据
vec.clear();
//不执行
for(int i = 0;i < vec.size();i++)
{
cout << vec[i] << ",";
}
cout << '\n';
//向量排序
vector <int> obj;
obj.push_back(1);
obj.push_back(3);
obj.push_back(0);
//升序
sort(obj.begin(),obj.end());
cout << "从小到大排序:" << endl;
for(int i = 0;i < obj.size();i++)
{
cout << obj[i] << ",";
}
cout << '\n';
//降序
//sort(obj.begin(),obj.end(),cmp);
for(int i = 0;i < obj.size();i++)
{
cout << obj[i] << ",";
}
cout << '\n';
//逆序,翻转函数区间内的顺序
reverse(obj.begin(),obj.end());
for(int i = 0;i < obj.size();i++)
{
cout << obj[i] << ",";
}
cout << '\n';
return ;
}
//使用向量手动输入一个二维数组
void cin_vector()
{
vector< vector<int> > arry; //写成arry(5) 可理解为设定大小5行
vector<int> d; //定义一个一维的数组;
int i, j, k, n;
int number;
scanf("%d", &n );
/*可以这样实现对vector二维的初始化,得到的是n行n列的矩阵*/
for( i = 0; i < n; i++ )
{
for( j = 0; j < n; j++ )
{
scanf("%d", &number );
d.push_back( number );
}
sort( d.begin(), d.end() ); //pai xu xuyao头文件algorithm
arry.push_back( d );
//d.clear(); //清空一维的数组
d.resize(0);
}
/*遍历输出*/
if( arry.empty() )
printf("0\n");
else{
for( i = 0; i < arry.size(); i++ )
{
for( j = 0; j < arry[0].size(); j++ )
{
printf("%d ", arry[i][j] );
}
printf("\n");
}
}
return ;
}
标签:obj,int,stdvector,三十一,c++,back,vector,数组,arry 来源: https://blog.csdn.net/weixin_52820035/article/details/121142654