vector向量容器

    技术2022-07-16  66

    底层的数据结构:动态开辟的数组,每次以原来空间的2倍进行扩容。 容器的方法都是底层已经设计好的:#include

    增加: vec.push_back(); 末尾添加元素 O(1) 导致容器扩容 vec.insert(it,20); 迭代器 it 指向的位置添加一个元素20 O(n) 导致容器扩容

    vector<int> vec; for(int i = 0;i<20;i++) { vec.push_back(rand()%100 + 1); } //给奇数前添加一个比自己小1的数 auto it2 = vec.begin(); for(;it2 != vec.end();++it2) { if(*it2 % 2 != 0) { it2 = vec.insert(it2,*it2-1); ++it2; } }

    删除: vec.pop_back(); 末尾删除元素 O(1) vec.erase(it); 删除it迭代器指向位置的元素 O(n)

    //删除所有的偶数 auto it1 = vec.begin(); while(it1 != vec.end()) { if(*it1 % 2 == 0) { it1 = vec.erase(it1); } else { it1++; } }

    查询: operator[] 下角标的随机访问vec[5] O(1) 迭代器进行遍历 find for_each

    int size = vec.size(); for(int i = 0;i < size;++i) { cout << vec[i] << " "; } cout << endl; auto it = vec.begin(); for(;it != vec.end();++it) { cout << *it << " "; } cout << endl;

    常用方法: size(); empty(); reserve(20);预留空间的,只会给容器底层开辟指定大小的内存空间,并不会添加新的元素。

    resize();容器扩容用的,不仅给容器开辟指定大小的内存空间,还会添加新的元素int()

    swap();两个容器进行元素交换

    Processed: 0.012, SQL: 9