STL ---- vector 使用

单纯的使用vector不和algorithm连用.

vector自带的方法:

push_back(num) pop_back()

push_back 添加元素, pop_back删除元素.添加和删除都是在末尾添加和删除的.

void assign(const_iterator first,const_iterator last);	// 相当于拷贝函数
void assign(size_type n,const T& x = T());		// 清除之前的内容,并且初始化n个x

demo:

    vector v_num{1, 2, 3, 4, 5};
    vector v_data;
    vector::const_iterator it = v_num.begin();

    v_data.assign(v_num.begin(), v_num.end());
    cout << "v_num value is     ";
    for (auto &num : v_num)
    {
        cout << num << "\t";
    }
    cout << endl;
    cout << "v_data value is    ";
    for (auto &num : v_data)
    {
        cout << num << "\t";
    }
    cout << endl;
    v_num.assign(2, 4);
    cout << "v_num value is     ";
    for (auto var : v_num)
    {
        cout << var << "\t";
    }

在这里插入图片描述

inline int &std::vector::at(size_t _Pos);

at函数和数组通过下脚标读取值是一样的.但是at比通过下角标读取的安全,因为如果超过vector最大值[]是不会报错的vector会向前读取,但是at会报错.

demo:

    cout << "v_num size = " << v_num.size() << endl;
    cout << "v_num[1] = " << v_num[3] << endl;
    cout << "v_num[1] = " << v_num.at(3) << endl;

在这里插入图片描述

front() back()

inline int &std::vector::back(); // 返回最后一个值
inline int &std::vector::front();	// 返回第一个值的引用
 cout << "v_data = " << v_data.back() << endl;

data

std::vector::data() 是 C++ 中的 STL,它返回一个指向内存数组的直接指针,该内存数组由向量内部用于存储其拥有的元素。

demo

    int *pos = v_data.data();
    cout << "pos = ";
    for (auto &num : v_data)
    {
        cout << *pos++ << "  ";
    }

在这里插入图片描述

size()、capacity()、resize()、reserve()

 size() // 返回向量的容量,是使用的容量
 capacity() // 返回真实向量的容量
 capacity() - size() // 未使用的容量
resize,即重置容器空间。当设置值小于当前容器空间时,会将目前容器中超出设置值的空间释放掉;当设置值大于当前容器空间时,会在当前空间的基础上增加容量。
reserve,即预留容器空间。当设置值大于当前容器空间时,会增加当前容器空间的大小

begin() cbegin() crbegin() end() crend() cend()

返回的迭代器,cbegin是const的不能改变. crbegin()是从后向前 c是const, r是从后向前.

clear()

清空数据.

empty()

判断是否为空,如果为空返回true 不为空返回false.

插入函数 emplace() 和 insert()

STL ---- vector 使用_第1张图片

emplace() 是 C++ 11 标准新增加的成员函数,用于在 vector 容器指定位置之前插入一个新的元素。再次强调,emplace() 每次只能插入一个元素,而不是多个。

erase

iterator erase(iterator position); //删除指定位置position的元素,并返回删除元素的下一个元素的迭代器
iterator erase(iterator first, iterator last);//删除从first到last(不包过last)之间的元素 [first,last),并返回last位置迭代器

你可能感兴趣的:(STL容器知识,c++,stl)