vector详解

立此留念。

本篇文章来源于《c++ primer》第四版第四章《容器和算法》和http://www.cplusplus.com/reference/vector/vector/ 上的有关英文文档内容

vector是一个类似于数组的容器,可以储存连续的空间。区别在于:

compared to arrays, vectors consume more memory in exchange for the ability to manage storage and grow dynamically in an efficient way
但我们只需要了解vector的用法(常用于OJ题),和在工程项目中的实践就好。

一. vector的constructor用法有多种,这里选择了c++ 11标准下最常用的四种:

#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;

int main(void)
{
	vector<int> v1();    //默认为空白的数组
	vector<int> v2(4,100);  //vector(n,value),构建n个value值得数组
	vector<int> v3(v2);     //进行拷贝数组
	vector<int> v4(v3.begin(),v3.begin()+v3.size()/2); //用迭代器来实现
	for(int i=0;i<v4.size();i++)
        cout<<v4[i]<<endl;     //输出结果为2个100

}<strong>
</strong>

二. begin、end:返回数组的起始和结束值,begin()指向第一个元素,end()指向最后一个元素的下一位置

      rbegin、rend,与上面相反,返回的是逆序迭代器,注意定义指针为vector<int>::reverse_iterator

     书上还有提到const_(reverse)_iterator,看是否为只读类型的。

int i=0;
vector<int>::reverse_iterator re = myvector.rbegin();
  for (; re!= myvector.rend(); ++rit)
    *re = ++i;  //从后向前赋值为1,2,3,4,5 按照顺序输出时为1,2,3,4,5

三. vector数组提供了push_back()功能

vector提供了push_back()的方法,在之后添加元素。

而list和deque多提供了方法push_front(),在之前添加元素

for(int i=0;i<4;i++)
list.push_back(i);
list.push_front(i); 两者返回的都是void值。
c.insert(p,t),迭代器p之前添加元素t,返回新元素的迭代器;
// vector<string> v1; v1.insert(v1.begin(),”test”) 等价于v1.push_back(“test”);
// 实现循环赋值
   vector<string>::iterator it=v1.begin();
  while(it!=v1.end())
it=insert(it,”test”);

c.insert(p,n,t),在p之前添加n个元素t,返回void;

c.insert(p,b,e),在迭代器p指向的元素之前添加迭代器b和e之间元素,返回void
顺便可以实现数组织间赋值
string arr[4]={“1st”,”2nd”,”3rd”,”4th”};
v1.insert(v1.end(),arr,arr+3);

这里还提到了说:比如说我们在循环操作时用it!=v1.end(),而不是

定义last=v1.end(),然后测试it!=last,因为插入元素会导致元素的迭代器失效


四.

9.3.4  关系操作符

只支持同类型数组、同类型元素的比较

比如:vector<int> v1,v2;

abc与abcde比较,abcde更长,后者大;

678与12345比较,第一个6>1,则之后不用比较;


9.3.5 容器的大小操作

c.size() 返回元素个数
c.max_size() 返回可以保存的最多的元素个数
c.empty() 为空,返回true;否,返回false;



  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
C++中的vector是一个动态数组,可以在运行时动态地增加或减少其大小。它提供了许多方便的方法来操作数组,例如在末尾添加元素、在任意位置插入元素、删除元素等等。下面是一些常用的vector操作: 1. 创建vector对象:可以使用默认构造函数创建一个空的vector对象,也可以使用带有初始值的构造函数创建一个包含初始值的vector对象。 ```c++ // 创建一个空的vector对象 std::vector<int> v1; // 创建一个包含初始值的vector对象 std::vector<int> v2 = {1, 2, 3}; ``` 2. 访问vector元素:可以使用下标运算符[]或at()方法来访问vector中的元素。 ```c++ std::vector<int> v = {1, 2, 3}; // 使用下标运算符[]访问元素 int x = v[0]; // x = 1 // 使用at()方法访问元素 int y = v.at(1); // y = 2 ``` 3. 在末尾添加元素:可以使用push_back()方法在vector的末尾添加一个元素。 ```c++ std::vector<int> v = {1, 2, 3}; // 在末尾添加一个元素 v.push_back(4); // v = {1,2, 3, 4} ``` 4. 在任意位置插入元素:可以使用insert()方法在vector的任意位置插入一个元素。 ```c++ std::vector<int> v = {1, 2, 3}; // 在第二个位置插入一个元素 v.insert(v.begin() + 1, 4); // v = {1, 4, 2, 3} ``` 5. 删除元素:可以使用erase()方法删除vector中的一个或多个元素。 ```c++ std::vector<int> v = {1, 2, 3}; // 删除第二个元素 v.erase(v.begin() + 1); // v = {1, 3} // 删除第二个到第三个元素 v.erase(v.begin() + 1, v.begin() + 3); // v = {1} ``` 6. 获取vector大小:可以使用size()方法获取vector中元素的数量。 ```c++ std::vector<int> v = {1, 2, 3}; // 获取vector大小 int size = v.size(); // size = 3 ``` 7. 清空vector:可以使用clear()方法清空vector中的所有元素。 ```c++ std::vector<int> v = {1, 2, 3}; // 清空vector v.clear(); // v = {} ```

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值