STL — vector

 基本摘抄自百度百科

其中,7 的 清空向量转载自    https://blog.csdn.net/a272846945/article/details/51182144

 

1,使用条件

头文件   <vector>     和   using namespace std;  (因为他是属于 C++ 的)

 

2,  定义:简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据。(度娘)

 

3,使用 :

vector <int> c;       //  长度未知,未初始化

vector <int> c(10);      //  长度为 10 ,未初始化

vector <int> c(10,1); //  长度为 10 ,全部初始化为 1

vector <char> a{ 'B', 'C' };          // 定义时初始化

vector<vector<int>> a = { { 1,2 },{ 3, 4 } };     // 定义时初始化

 

4,函数

c.assign(beg,end):将[beg; end)区间中的数据赋值给c。

c.assign(n,elem):将n个elem的拷贝赋值给c。 

c.empty(): 空返回true,否则返回false

c.clear():  清空元素,但不回收空间

 

  c.front():传回第一个数据

  c.back():传回最后一个数据,不检查这个数据是否存在。

  c.begin():传回迭代器中的第一个数据地址。

  c.end(): 指向迭代器中末端元素的下一个,指向一个不存在元素。

 

insert(c.begin()+2,a)       在第三给元素前面插入 a

erase(c.begin(),c.begin()+3);   删除一个区间,从第一个元素到第二个元素,不包括第三个元素

find(c.begin(),c.end(),w);  从c.begin()(含它)到c.end()(不含它)的元素中查找 w,若存在w,则返回其在 vector 中的位置,若不存在,则返回  c.end() 的地址

sort(c.begin(),c.end());   从c.begin()(含它)到c.end()(不含它)的元素进行从小到大排列     需要头文件#include<algorithm>? 这个是快排的函数

 

vector添加数据的缺省方法是push_back(),  而不能直接用下标赋值。因为他是动态分配内存的,使用下标只能用来获取已经存在的元素 ,它并不能分配内存给新加进来的数据

push_back():   函数表示将数据添加到 vector 的尾部,并按需要来分配内存。

pop_back();  函数表示删除 vector 的最后一个数据

 

 

5,打印

根据其数据类型,与相同类型的数组操作基本一样。

 

 

6,缺点

时间:运行速度与数组相比较慢

空间:clear() 无法清空内存。
 
 
7, vector 的清空
① 将 vector 用局部变量使用,这样就可以在每次要用到的时候将 vector 重新定义
② 如果我们只是做题,clear();   就可以继续输入下一组数据了,尽管占据的内存大小不一定是我们希望的大小(不是输入新的数据后应该占据的内存大小),但一般不会影响到做题。
③ 用 swap 函数交换,原理开头连接里有。
 
 
 8,总结:
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
using namespace std;
int main(void)
{
	vector<int>a;          //本质为数组

	for (int i = 20 - 1; i >= 0; i--)
		a.push_back(i);    //插入尾部
	printf("%d\n", a[5]);  //查询第六个元素

	for (int i = 0; i < a.size(); i++)   //遍历
		printf("%d ", a[i]);
	puts("");

	puts("sort:");
	sort(a.begin(), a.end());  // 排序

	a.erase(a.begin() + 4);    // 删除第五个元素
	for (int i = 0; i < a.size(); i++)
		printf("%d ", a[i]);
	puts("");

	system("pause");
	return 0;
}

 

 

=========== ======== ======= ====== ====== ===== ==== === == =

子曰:朝闻道,夕死可矣

          —— 论语·里仁

 

 

 

posted @ 2020-03-06 18:12  叫我妖道  阅读(190)  评论(0编辑  收藏  举报
~~加载中~~