vector

        开始刷leetcode之前,发现给的模版如下:

class Solution {

public:

vector<int> twoSum(vector<int>& nums, int target) {

            .........................

}

};

        里面有些东西让我有些措手不及,一方面之前刷的洛谷什么的,都是写完整的代码,但是leetcode则是给你一个函数,去掉了那些琐碎的东西,会让人更加关注算法本身,但是,我之前没有怎么用过c++的容器,因此有必要学习一番。

vector

        1.vector是最简单也是最重要的一个容器。其头文件为<vector>.
        2.vector是数组的一种类表示,它有以下优点:自动管理内存、动态改变长度并随着元素的增减而增大或缩小。
        3.在尾部添加元素是固定时间,在头部或中间添加或删除元素是线性时间。
        4.vector是可反转容器。。

vector的几种声明方法

 vector<int> a ;                                //声明一个int型向量a
 vector<int> a(10) ;                            //声明一个初始大小为10的向量
 vector<int> a(10, 1) ;                    //声明一个初始大小为10且初始值都为1的向量
 vector<int> b(a) ;                             //声明并用向量a初始化向量b
 vector<int> b(a.begin(), a.begin()+3)//将a向量中从第0个到第2个作为向量b的初始值
int n[] = {1, 2, 3, 4, 5} ;
        vector<int> a(n, n+5) ;              //将数组n的前5个元素作为向量a的初值
        vector<int> a(&n[1], &n[4]) ;        //将n[1] - n[4]范围内的元素作为向量a的初值

vector输入及访问

1.可使用cin和cout进行输入和输出(vector的特有访问方法,一般容器只能通过迭代器访问

eg:

vector<int> a(10, 0) ;      //大小为10初值为0的向量a
 9 
10         //对其中部分元素进行输入
11         cin >>a[2] ;
12         cin >>a[5] ;
13         cin >>a[6] ;
14 
15         //全部输出
16         int i ;
17         for(i=0; i<a.size(); i++)
18             cout<<a[i]<<" " ;
19 

 2.使用遍历器(又称迭代器)进行输出控制

每种容器都定义了一对命名为begin和end的函数,用于返回迭代器。如果容器中有元素的话,由begin返回的迭代器指向***个元素把iter初始化为由名为begin的vector操作返回的值。假设vector不空,初始化后,iter即指该元素为ivec[0]。

由end操作返回的迭代器指向vector的“末端元素的下一个”。通常称为超出末端迭代器(off-the-end iterator),表明它指向了一个不存在的元素。如果vector为空,begin返回的迭代器与end返回的迭代器相同。由end操作返回的迭代器并不指向vector中任何实际的元素,相反,它只是起一个哨兵(sentinel)的作用,表示我们已处理完vector中所有元素。

eg:

vector<int>::iterator t ;
    for(t=a.begin(); t!=a.end(); t++)
        cout<<*t<<" " ;

 


 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值