C++|什么是vector()

模板类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++|什么是vector()
文章图片

    推荐阅读