首页 > 其他分享 >STL <vector>

STL <vector>

时间:2024-10-05 14:23:25浏览次数:1  
标签:end 迭代 STL 元素 back vector size

vector是动态数组,支持随机访问,不支持在任意位置O(1)插入为,元素的增删一般在末尾进行

include 头文件声明

vector a; 相当于声明一个长度动态变化的int数组

vector b[233]; 相当于声明一个第一维长233,第二维长度动态变化的int数组

struct abc{...};
vector c; 自定义的结构体类型也可以保存在vector中

/////
size/empt

a.size()/a.empty()
size函数返回vector的实际长度(包含的元素个数)
empty函数返回一个bool类型,表明vector是否为空
二者的时间复杂度都是O(1)。

/////
clear

a.clear()
clear函数令vector a清空

/////
begin/end

begin函数返回指向vector中第一个元素的迭代器
例如a是一个非空的vector,则*a.begin()与a[0]的作用相同
end函数返回vector的尾部,即第n个元素再往后的边界
*a.end()与a[n]都是越界访问,其中n=a.size()。
下面两份代码都遍历了vectora,并输出它的所有元素
for (int i = 0; i < a.size(); i ++) cout << a[i] << endl;
for (vector::iterator it = a.begin(); it != a.end(); it ++) cout << *it << endl;

/////
迭代器

vector::iterator it;//一个保存int的vector的迭代器声明
迭代器形如STL容器的“指针”,可以用星号*操作符解引用
vector的迭代器是“随机访问迭代器”,可以把vector的迭代器与一个整数相加减,其行为和指针的移动类似
可以把vector的两个迭代器相减,其结果也和指针相减类似,得到两个迭代器对应下标之间的距离

/////
front/back

a.front()/a.back()
front函数返回vector的第一个元素,等价于a.begin() 和 a[0]
back函数返回vector的最后一个元素,等价于
==a.end() 和 a[a.size() – 1]

/////
push_back() 和 pop_back()

a.push_back(x) 把元素x插入到vector a的尾部
a.pop_back() 删除vector a的最后一个元素

标签:end,迭代,STL,元素,back,vector,size
From: https://www.cnblogs.com/dianman/p/18447824

相关文章

  • rustling学习随笔
    序言rustling是一个关于rust的练习题的项目.可以帮助大家通过完成一个项目的方式练习rust的语法,我认为对于补充我rust现学现卖过程中的情况很有帮助.下边是GPT对它的介绍:Rustling是专为那些想要学习Rust编程语言的人设计的一个交互式练习集合。无论你是编程新手还是有经......
  • STL之list篇(下)(从底层分析实现list容器,逐步剥开list的外表)
    文章目录前言一、list的数据结构和类实现需求1.1数据结构1.2list类实现需求二、list迭代器的实现2.1为什么list不能直接把迭代器当作指针一样使用?2.2list迭代器的框架设计2.3`*`和`->`操作符的重载2.4`++`和`--`操作符的重载2.5`!=`和`==`操作符的重载三、l......
  • 【C++ STL】深入理解string类的底层实现
    string类的模拟实现一.string的构造与析构函数1.普通构造函数与析构函数2.拷贝构造的浅拷贝所带来的问题3.如何实现深拷贝二.运算符重载1.赋值运算符重载2.大小比较相关的运算符重载三.迭代器的实现四.string常用操作的实现1.静态const成员npos的定义2.插入操作3.查找......
  • STL之string
    STL之string1.为什么学习string类?1.1C语言中的字符串1.2两个面试题(暂不做讲解)2.标准库中的string类2.1string类(了解)2.2auto和范围for(重点)2.3string类的常用接口说明(注意下面我只讲解最常用的接口)1.为什么学习string类?1.1C语言中的字符串C语言中,字符......
  • STL05——手写一个简单版本的红黑树(500+行代码)
    STL05——手写一个简单版本的红黑树题目描述在STL中,红黑树是一个重要的底层数据结构,本题需要设计一个RedBlackTree类,实现如下功能:1、基础功能构造函数:初始化RedBlackTree实例析构函数:清理资源,确保无内存泄露2、核心功能在RedBlackTree中插入一个节点在RedBlack......
  • STL之vector篇(下)(手撕底层代码,从零实现vector的常用指令,深度剖析并优化其核心代码)
    文章目录1.基本结构与初始化1.1空构造函数的实现与测试1.2带大小和默认值的构造函数1.3使用迭代器范围初始化的构造函数(建议先看完后面的reserve和push_back)1.4拷贝构造函数1.5赋值操作符的实现(深拷贝)1.6析构函数1.7`begin`与`end`迭代器2.容量管理2.1`re......
  • 【C++篇】从零实现 C++ Vector:深度剖析 STL 的核心机制与优化
    文章目录从零实现C++Vector前言1.基本结构与初始化细分1.1空构造函数的实现与测试实现代码:测试用例:输出:1.2带大小和默认值的构造函数实现代码:测试用例:输出:1.3拷贝构造函数实现代码:测试用例:输出:1.4赋值操作符的实现实现代码:测试用例:输出:2.容量管理的实现与测......
  • C++ 标准模板库(STL)之集合(set)
    啊,哈喽,小伙伴们大家好。我是#张亿,今天呐,学的n钱买n鸡是集合(set)C++标准模板库(STL)之集合(set)(下面代码中的std::要去掉)在C++标准模板库(STL)中,set 是一种非常有用的容器,用于存储唯一元素的集合。set 内部自动对元素进行排序,通常使用红黑树(Red-BlackTree)实现,以保证元素以升......
  • c++模板,STL
                                            C++提高编程模板函数模板语法:template用法://自动类型推导mySwap(a,b);//显示指定类型mySwap<int>(a,b);注意事项自动类型推导,必须推导出 一致 的数据类型T,才可......
  • 【C++篇】解密 STL 动态之魂:全面掌握 C++ vector 的高效与优雅
    文章目录C++`vector`容器详解:从入门到精通前言第一章:C++`vector`容器简介1.1C++STL容器概述1.2为什么使用`vector`1.3`vector`的优缺点第二章:`vector`的构造方法2.1常见构造函数2.1.1示例:不同构造方法2.1.2相关文档第三章:`vector`容量与大小操作3.1......