stl容器vector笔记

Vector

  • 一、初始化
  • 二、常用方法
      • 1. 访问元素at()、下标、data()、front()、back()
      • 2. push_back()、pop_back()尾部增删元素
      • 3. insert()在pos前插入元素,返回插入位置
      • 4. erase()擦除元素,返回擦除元素后的元素位置
      • 5. clear()清空容器
      • 6. resize()改变容器元素个数
      • 7. swap()容器交换
      • 8. 容量

stl容器vector笔记_第1张图片


  • std::vector 是封装动态数组的顺序容器。
  • 头文件#include
  • 常见操作复杂度
    • 随机访问——常数 O(1)
    • 在末尾插入或移除元素——均摊常数 O(1)
    • 插入或移除元素——与到 vector 结尾的距离成线性 O(n)

一、初始化

  • 以int为例构造vector
vector<int> v1();					//空构造
vector<int> v2 = {1, 2, 3, 4, 5};	//存入1、2、3、4、5
vector<int> v3(4);			    //开辟4个空间,值默认为0
vector<int> v4(6,1);		    //6个值为1的元素
vector<int> v5(v4);		        //拷贝构造,复制v4
vector<int> v6(v2.begin()+2, arr4.end()); //存入3、4、5

  • assign函数给容器重新赋值,会清空容器内已有的元素
void assign( size_type count, const T& value );

template< class InputIt >  
void assign( InputIt first, InputIt last );

void assign(std::initializer_list<T> ilist);

二、常用方法

stl容器vector笔记_第2张图片


1. 访问元素at()、下标、data()、front()、back()

reference at( size_type pos );
const_reference at( size_type pos ) const;

reference operator[]( size_type pos );
const_reference operator[]( size_type pos ) const;

T* data() noexcept;
const T* data() const noexcept;

reference front();     //首元素
const_reference front() const;

reference back();     //尾元素
const_reference back() const;

2. push_back()、pop_back()尾部增删元素

void push_back( const T& value );
void push_back( T&& value );
void pop_back();

3. insert()在pos前插入元素,返回插入位置

iterator insert( const_iterator pos, const T& value );
iterator insert( const_iterator pos, T&& value );
iterator insert( const_iterator pos,size_type count, const T& value );
iterator insert( const_iterator pos, InputIt first, InputIt last );
iterator insert( const_iterator pos, std::initializer_list<T> ilist );

4. erase()擦除元素,返回擦除元素后的元素位置

iterator erase( iterator pos );
iterator erase( const_iterator pos );
iterator erase( iterator first, iterator last );
iterator erase( const_iterator first, const_iterator last );

5. clear()清空容器

void clear() noexcept;

6. resize()改变容器元素个数

  • 容器超过count的元素会被删除,不足的用默认值或value填充
void resize( size_type count );
void resize( size_type count, const value_type& value );

7. swap()容器交换

  • 将内容与 other 的交换。不在单个元素上调用任何移动、复制或交换操作。所有迭代器和引用保持合法。尾后迭代器被非法化。
void swap( vector& other );

8. 容量

bool empty() const noexcept; //判空
size_type size() const noexcept;   //返回元素个数
size_type max_size() const noexcept; //返回能容纳元素数目最大值
size_type capacity() const noexcept; //返回容器当前分配空间的元素数
void reserve( size_type new_cap ); //若new_cap大于当前的 capacity()则分配新存储空间

你可能感兴趣的:(c艹,c++,笔记,算法,容器)