码迷,mamicode.com
首页 > 其他好文 > 详细

vector

时间:2018-12-15 00:15:31      阅读:130      评论:0      收藏:0      [点我收藏+]

标签:blog   get   front   构造函数   color   大数   empty   Locator   cep   

https://www.cnblogs.com/-Mr-y/p/7985987.html#_label2

https://blog.csdn.net/phoebin/article/details/3864590

1、初始化

vector<Widget> vWidgets; 
get_allocator使用构造函数返回一个拷贝
c.~ vector <Elem>()销毁所有数据,释放内存
vector <Elem> c(beg,end)创建一个以[beg;end)区间的vector

2、插入内容

c.insert(pos,elem)在pos位置插入一个elem拷贝,传回新数据位置。

c.insert(pos,n,elem)在pos位置插入n个elem数据。无返回值。

c.insert(pos,beg,end)在pos位置插入在[beg,end)区间的数据。无返回值

c.push_back(elem)在尾部加入一个数据

 

3、访问内容

c.assign(beg,end)    \\将[beg; end)区间中的数据赋值给c。

c.assign(n,elem)      \\将n个elem的拷贝赋值给c

c.back()

c.front()

c.at(idx)

operator[]返回容器中指定位置的一个引用

使用两种方法来访问vector。

1、   vector::at()
2、   vector::operator[]

  operator[]主要是为了与C语言进行兼容。它可以像C语言数组一样操作。at()是我们的首选,因为at()进行了边界检查,如果访问超过了vector的范围,将抛出一个例外。由于operator[]容易造成一些错误,所有我们很少用它,下面进行验证一下:

vector<int> v;
v.reserve(10);
 
for(int i=0; i<7; i++)
    v.push_back(i);
 
try {
    int iVal1 = v[7];    // not bounds checked - will not throw
    int iVal2 = v.at(7); // bounds checked - will throw if out of range
}
catch(const exception& e) {
    cout << e.what();
}

我们使用reserve()分配了10个int型的空间,但并不没有初始化。  

你可以在这个代码中尝试不同条件,观察它的结果,但是无论何时使用at(),都是正确的。

4、访问地址

c.end()

c.begin()

c.rbegin()传回一个逆向队列的第一个数据

5、删除

c.erase(pos)        \\删除pos位置的数据,传回下一个数据的位置。

c.erase(beg,end)       删除[beg,end)区间的数据,传回下一个数据的位置 

 c.pop_back()删除最后一个数据

 

 

6、属性

c.capacity()

c.clear()

c.empty()

c.max_size()返回容器中最大数据的数量

c.resize(num)重新指定队列的长度

c.reserve()保留适当的容量

c.size()

c1.swap(c2)将c1和c2元素互换

swap(c1,c2)

 

vector

标签:blog   get   front   构造函数   color   大数   empty   Locator   cep   

原文地址:https://www.cnblogs.com/wllwqdeai/p/10122194.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!