首页 > 其他分享 >STL-vector

STL-vector

时间:2024-10-06 11:11:34浏览次数:1  
标签:函数 迭代 STL 元素 back vector size

STL vector

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

push_back()
pop_back()

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

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

相关文章

  • STL-queue&stack
    STLqueue&stackqueue主要包括循环队列queue和优先队列priority_queue两个容器stack包含栈容器include头文件声明#include<queue>#include<stack>声明queue<int>q;structabc{…};queue<abc>q; //结构体rec中必须定义小于号priority_queue<int>q; //大根......
  • STL
    vector是动态数组,支持随机访问,不支持在任意位置O(1)插入为,元素的增删一般在末尾进行include头文件声明vectora;相当于声明一个长度动态变化的int数组vectorb[233];相当于声明一个第一维长233,第二维长度动态变化的int数组structabc{...};vectorc;自定义的结构体类......
  • STL <vector>
    vector是动态数组,支持随机访问,不支持在任意位置O(1)插入为,元素的增删一般在末尾进行include 头文件声明vectora; 相当于声明一个长度动态变化的int数组vectorb[233]; 相当于声明一个第一维长233,第二维长度动态变化的int数组structabc{...};vectorc; 自定义的结构体......
  • rustling学习随笔
    序言rustling是一个关于rust的练习题的项目.可以帮助大家通过完成一个项目的方式练习rust的语法,我认为对于补充我rust现学现卖过程中的情况很有帮助.下边是GPT对它的介绍:Rustling是专为那些想要学习Rust编程语言的人设计的一个交互式练习集合。无论你是编程新手还是有经......
  • c++ vector容器、字符串
    c++vector容器          字符串:           ......
  • 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.查找......
  • DashVector x 通义千问大模型:打造基于专属知识的问答服务
    本教程演示如何使用向量检索服务(DashVector),结合LLM大模型等能力,来打造基于垂直领域专属知识等问答服务。其中LLM大模型能力,以及文本向量生成等能力,这里基于DashScope上的通义千问API以及EmbeddingAPI来接入。背景及实现思路大语言模型(LLM)作为自然语言处理领域的核心技术,具......
  • 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......