寒假集训—STL—vector

本文介绍了C++标准模板库(STL)中的Vector容器的基本使用方法,包括定义、初始化、元素访问、迭代器使用及常见操作等。Vector类似于动态数组,能够自动调整大小。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

第一天在light oj上刷了两道水题:因为据老师的建议那个oj的前100道题难度递增,很不错的,适合初学者,但是刷了两道水题之后觉得还不如回来学学STL,毕竟学会了挺方便的。

浏览了好几篇博客的STL的概要,决定先从vector开刀(它和c语言中的动态数组有点像):

First, 头文件:

#include<vector>
Second: 定义:

vector有好几种定义方式,其中这几种觉得比较实用点:

 vector<int > Vint1;///一个不含任何元素的空vector(可以认为是空数组)
    vector<int > vint2(n); ///含有十个初始化为0的元素的vector(类似int vint[10] = {0,0,0...}  //10个0
    vector<int > vint3(vin2);///vint3是vint2的一个拷贝,不严谨的表示为vint3 = vint2
Third:对vector中指定位置的元素操作方法:

1.vint[]—兼容c的操作——不检查越界,若是越界出错;

vector<int > vint2(30);
    for(int i = 0 ; i < 20; i++)
    {
        vint2[i] = i;
    }
    for(int i = 0; i < 20; i++)
        printf("%d ",vint2[i]);
2.vint.at(i)—stl自带方法——检查是否越界,越界则会抛出异常
    vector<int > vint2(20);
    for(int i = 0 ; i < 20; i++)
    {
        vint2.at(i) = 0;
    }
    for(int i = 0; i < 21; i++)
        printf("%d ",vint2.at(i));
输出:



另外:还可以通过vector的自带方法vint.push_back(x),在vint的尾部添加元素,因为它可以自动增加数组长度,所以避免了越界。

Fourth: vector迭代器(或者说指针)及常用方法:

1.vector迭代器:

vector<int > ::iterator p = vint.begin();
可以这样用:
    for(vector<int > ::iterator p = vint.begin(); p != vint.end(); p++)
        printf("%d ", *p);
2.vector常用方法:

1.vint.size()    返回vint中的数据个数;

2.vint.capacity()     返回vector中的个数(与vint.size()不同,它会返回vint的总长度,自己试一下就知道了)

3.vint.begin()      返回vint的首位置的迭代器;

4.vint.end()     返回vint最后一个数据后面位置的迭代器

5.vint.empty()      判断vint为空,空则为True,非空则为False

6.vint.clear()       清空vint,但不删除vint

7.vint.assign(n, num)    在vint的前n个位置赋值为num(当然,如果vector是其他类型类似)

8.vint.assign(v.begin(), v.end())     把v中的[v.begin(), v.end())中的数据复制到vint中

最后文中有什么不足和错误,望交流和指教。




评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值