模板类vector和array是数组的替代品,当开始学习c++时突然遇见vector时也是很懵的。
模板类vector
- 模板类vector类似于string类,是一种动态数组,可以在运行的阶段设置vector对象的长度,可在末尾添加新的数据,还可以在中间添加新的数据,基本上,它是使用new创建动态数组的替代品。实际上,vector类确实使用new和delete来管理内存。
我们不深入研究vector到底是什么,只简单的讨论他的用法。首先,使用vector时要引入头文件#include,其次,vector包含在std空间中,第三,模板类用不同的语法来指出他的类型。第四,用不同的语法来表示不同的元素数
例如:
vectorarr1;
//开辟一个arr1数组
int n;
cin>>n;
vectorarr2(n);
//开辟一个double型的长度为n的数组
arr1是一个vector的对象,arr2是一个vector的对象。由于vector对象在插入值时可以自动调节长度因此可以将arr1的长度赋值为0,但是如果要调整长度需要调用vector里中的各种方法。
vectorarr2(n)为开辟一个名为arr2的double型的数组长度为n。
除了分配存储空间外,vector还提供了一些基本方法,其中包括size()——返回容器中元素个数、swap()——交换两个容器内容、begin()——返回一个指向容器第一个元素的迭代器、end()——返回一个超过容器尾的迭代器、insert()——插入元素、erase()——删除元素。
什么是超过容器尾,它是指向超过容器最后一个元素指向最后一个的下一个的元素。超过结尾是一个指向元素的指针。end()成员函数标识超过结尾位置。
vector 也包含一些只有某些STL容器才有的方法。push_back()是一个种的方法,它将元素插入到末尾。
ease()方法删除给定的区间的元素,他接受两个参数,这些参数定义了要删除的区间,第一个参数位于指向区间的起始位置,第二个参数指向区间终止的后一个位置
例如:
arr earse(arr.begin(),arr.begin()+2);
//删除了begin()和begin()+1两个元素
insert()方法给指定的区间插入元素,它有三个参数,第一个参数指定新元素插入的位置,第二个和第三个参数定义了被插入区间,该区间通常是容器对象的一部分。
例如:
vectorold;
vectornew;
old.insert;//将new中除了第一个元素都插入到old中第一个元素之前。
最后附上一道<<剑指offer>>中的题目
在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。
class Solution {
public:
bool Find(int target, vector > array)
{
int row=array.size();
int col=array[0].size()
}
};
【C++|什么是vector()】vector < vector < int > >array是创建一个名为array的二维数组他的数据类型是int型。
#include
#include
#include
using namespace std;
class Solution {
public:
bool Find(int target, vector >array) {
int row = array.size();
int col = array[0].size();
int i, j;
for (i = row - 1, j = 0;
i >= 0 && j < col;
)//for循环里必须有两个分号不能省略
{
if (target < array[i][j])//从第一列的后面往前遍历,因为数组是从小往大递增的
{
i--;
continue;
}
else if (target > array[i][j])//当目标值大于这一列的最大值时直接进入下一列
{
j++;
continue;
}
else
{
cout << array[i][j] << endl;
return true;
}
}return false;
}
};
int main()
{
Solution s;
vector >array(4, vector(4));
//定义一个4*4的二维数组
//给数组元素赋值
array[0][0] = 1;
array[0][1] = 2;
array[0][2] = 3;
array[0][3] = 4;
array[1][0] = 2;
array[1][1] = 3;
array[1][2] = 6;
array[1][3] = 7;
array[2][0] = 3;
array[2][1] = 4;
array[2][2] = 7;
array[2][3] = 8;
array[3][0] = 5;
array[3][1] = 6;
array[3][2] = 9;
array[3][3] = 10;
cout << s.Find(9, array);
system("pause");
return 0;
}
文章图片
推荐阅读
- c++|c++ 显示三维散点图_python的matplotlib库绘制条形图、散点图、饼图、折线图,都齐了
- c++|C++期末作业-图书馆管理系统
- 神仙|B2. Tokitsukaze and Good 01-String (hard version)
- windows11 安装vc++6.0
- 网络|TCP/IP Socket网络编程
- C语言与C++编程|看完这篇你还能不懂C语言/C++内存管理()
- C++|【C++】C/C++内存管理详解
- C++|C++之AVL树
- c/c++内存管理