0
点赞
收藏
分享

微信扫一扫

关于电脑一天24小时多少度电电脑的一天用电量计算

悬灸人雪洋 2024-02-29 阅读 6

Vector 是在堆中分配了一段连续的内存空间来存放元素。

常用的迭代器:

1. begin:成员返回指向第一个元素的迭代器;

2. end:成员返回容器最后一个元素的下一个位置(one past the end)

常用的操作:

1. empty():如果为空则返回true,否则返回false;

2. size():返回容器中元素的个数

3. push_back(val) 向vector的尾端添加值为val的元素

4. pop_back(val):删除尾元素,返回void。

5. v[n]:返回v中第n个位置上元素的引用,不能用下标操作添加元素。

6. back():返回容器中最后一个元素的引用。

7. front():返回容器中第一个元素的引用。

8.  insert(p, n, val) :在迭代器 p 之前插入 n 个值为 val 的元素,返回新添加的第一个元素的迭代器。

9. erase(p) :删除迭代器 p 所指的元素,返回指向被删除元素之后元素的迭代器。

erase(b, e) :删除迭代器 b, e 之间的元素,返回指向最后一个被删除元素之后元素的迭代器。

10. sort():按输入序列的字典序升序排序,原为操作,无返回值函数原型:

void std::sort<std::vector<int>::iterator> (std::vector<int>::iterator, std::vector<int>::iterator);

11.unique():消除相邻的重复元素,该函数将输入序列相邻的重复项”消除“,返回一个指向不重复值范围末尾的迭代器,一般配合sort()使用

 

std::vector<int>::iterator std::unique<std::vector<int>::iterator>(std::vector<int>::iterator, std::vector<int>::iterator)

 

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
 
int main(void)
{
    vector<int> a{5,5,6,8,2,4,3,6,4};
    sort(a.begin(), a.end());  // 先排序
    for(int i:a)
        cout << i << " " ; // 输出
    cout << endl;
    auto end_unique = unique(a.begin(), a.end());  //将输入序列相邻的重复项“消除”,返回一个指向不重复值范围末尾的迭代器
    a.erase(end_unique, a.end()); // 删除末尾元素
    for(int i:a)
        cout << i << " "; // 输出
    return 0;
}

12. 逆序reverse() ,原位操作,将容器内容逆向排列

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

int main(void)
{
    vector<int> a{1,2,3,4,5,6,7};
    reverse(a.begin(), a.end());  // 原位逆序排列
    for(int i:a)   cout << i << " "; // 输出
    return 0;
}

输出为 7 6 5 4 3 2 1

13. 获取最大值元素:max_element(v.begin, v,end()) 返回最大值的迭代器

14.获取最小值元素:min_element(v.begin, v,end()) 返回最小值的迭代器

15. 获取两个元素之间的相对距离:distance(x, y), x, y是迭代器类型,返回x,y之间的距离、

vector的扩容过程:

如果集合已满,在新增数据的时候,就要分配一块更大的内存,将原来的数据复制过来,释放之前的内存,在插入新增的元素,所以对vector的任何操作,一旦引起空间重新配置,指向原vector的所有迭代器就都失效了

size()和capacity()

vector有两个函数,⼀个是capacity(),在不分配新内存下最多可以保存的元素个数,另⼀个size(),返回当前已经存 储数据的个数。

resize()和reserve()

resize():改变当前容器内含有元素的数量(size()),⽽不是容器的容量

1. 当resize(len)中len>v.capacity(),则数组中的size和capacity均设置为len;

2. 当resize(len)中len<=v.capacity(),则数组中的size设置为len,⽽capacity不变;

reserve():改变当前容器的最⼤容量(capacity)

1. 如果reserve(len)的值 > 当前的capacity(),那么会重新分配⼀块能存len个对象的空间,然后把之前的对象通过 copy construtor复制过来,销毁之前的内存;

2. 当reserve(len)中len<=当前的capacity(),则数组中的capacity不变,size不变,即不对容器做任何改变。

举报

相关推荐

0 条评论