vector

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了vector相关的知识,希望对你有一定的参考价值。

vector这个容器表示可变数组的序列容器,也是连续的内存空间,我们在理解它的时候就按照顺序表的方式去理解即可。
我们在看vector的常用接口时还是将它分类来看:构造与析构、迭代器、元素访问、元素修改、容量。

构造---->
常用构造方式:
std::vector<int> first; //空
std::vector<int> second (4,100); //4个值为100的元素
std::vector<int> third (second.begin(),second.end()); //区间构造
std::vector<int> fourth (third); //拷贝构造
std::vector<int> v = { 1, 2, 3, 4, 5 };

迭代器--->
begin()
end()
返回值是iterator类型

元素访问--->
[]和at都可以随即访问vector中的元素,不同是在越界访问时at抛出异常,而[]则是触发assert
front()和back()分别返回这个容器第一个元素和最后一个元素的引用。
元素修改--->
1.assgin:有可能发生扩容

vector<int> v = { 1, 2, 3, 4, 5 };
    v.assign(3, 5);
    for (auto e : v)
    {
        cout << e;
    }

输出555,说明assign就是将容器中替换为n个值为val的元素
2.push_back和pop_back尾插和尾删操作
3.insert插入
①:
iterator insert (iterator position, const value_type& val);
向pos位置插入值为val的元素
②:
void insert (iterator position, size_type n, const value_type& val);
向pos插入n个值为val的元素
4.earse:
iterator erase (iterator position);
iterator erase (iterator first, iterator last);
5.clear()清空
容量
和string中基本没有差别

以上是关于vector的主要内容,如果未能解决你的问题,请参考以下文章

以下代码片段的时间复杂度是多少?

为什么std :: foreach不能用于std :: vector ? [重复]

如何将浮点矩阵作为 2D 纹理传递给片段着色器?

Jax 矢量化:vmap 和/或 numpy.vectorize?

光照 法向量(Normal Vector)

光照 法向量(Normal Vector)