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,总结:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#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 @   叫我妖道  阅读(191)  评论(0编辑  收藏  举报
编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
有点晚了,要早点睡觉哦!
点击右上角即可分享
微信分享提示