当前位置: 首页 > news >正文

Vector类

一.vector的构造

1.无参构造

vector()

2.含参构造

vector(size_type n, const value_type& val = value_type())

n表示的是vector中元素的个数,val指的是元素的值是多少。

std::vector<int> second (4,100); //创建了一个名为second的std::vector<int>(整数向量), //它初始包含4个元素,每个元素的值都是100。

3.拷贝构造

vector (const vector& x)

std::vector<int> third (second);

4.迭代器初始化构造

vector (InputIterator first, InputIterator last);

std::vector<int> fourth (second.begin(),second.end());

注意迭代器的second.begin()指向的是second的第一个元素,而second.end()指向的是第四个元素后面的位置。迭代器实行的是左闭右开。因此刚好覆盖second对象的全部元素。

5.用初始化链表构造

std::vector<int> fifth{1,2,3,4,5};

二.vector空间增长问题

功能stringvector说明
获取大小size()size()元素个数
获取容量capacity()capacity()当前最多能存多少元素
判空empty()empty()是否为空
改变大小resize(n)resize(n)改变元素个数
改变容量reserve(n)reserve(n)预留空间
清空clear()clear()删除所有元素
交换swap()swap()交换两个对象

vector的这些函数与string的用法类似。这里不过多讲解。

三.vector 增删查改

1.push_back

尾插一个数据

void push_back (const value_type& val);

val既可以传左值又可以传右值,是因为const value_type&是const T&是一个万能引用。

std::vector<int> v1{1,2,3,4,5}; v1.push_back(6);//v1中存放1,2,3,4,5,6

2.pop_back

尾删操作:移除向量中的最后一个元素,实际上将size()大小减小一。

3.find

vector没有自己的find接口函数。这个find是std中的find。

std::find 函数的返回值是一个迭代器,它指向在搜索范围 [first, last) 中第一个值等于 val 的元素。

如果找不到,它就返回 last。

int myints[] = { 10, 20, 30, 40 }; std::vector<int> myvector(myints, myints + 4);//迭代器区间构造 std::vector<int>::iterator it; it = find(myvector.begin(), myvector.end(), 30); if (it != myvector.end()) std::cout << "Element found in myvector: " << *it << '\n';//Element found in myvector:30 else std::cout << "Element not found in myvector\n";

4.insert

single element (1)
iterator insert (iterator position, const value_type& val);指定位置处(迭代器类型)插入值val
fill (2)
void insert (iterator position, size_type n, const value_type& val);在指定位置处(迭代器类型)插入n个val
range (3)
template <class InputIterator> void insert (iterator position, InputIterator first, InputIterator last);注意均是迭代器类型(可以想成c语言中的指针)
int myints[] = { 10, 20, 30, 40 }; std::vector<int> myvector(myints, myints + 4);//迭代器区间构造 std::vector<int>::iterator its = myvector.begin()+1; myvector.insert(its, 15);//10,15,20,30,40 for (auto& its : myvector) { std::cout << its << ' '; }
myvector.insert(its,2,15); for (auto& its : myvector) { std::cout << its << ' ';//10,15,15,20,30,40 }
int arr_2[] = { 11,12,13,14,15,16 }; myvector.insert(its, arr_2, arr_2+6); for (auto& its : myvector) { std::cout << its << ' ';//10,11,12,13,14,15,16,20,30,40 }

5.erase

iterator erase (iterator position);//指定位置的删除

iterator erase (iterator first, iterator last);//删除一段区域

std::vector<int>::iterator pos = myvector.begin();//删除10 myvector.erase(pos); for (auto& its : myvector) { std::cout << its << ' '; }
myvector.erase(pos,pos+3);//删除10,20,30 for (auto& its2 : myvector) { std::cout << its2 << ' '; } return 0;

6.swap

void swap (vector& x);用于交换两个数组的元素。

std::vector<int> foo (3,100); // three ints with a value of 100 std::vector<int> bar (5,200); // five ints with a value of 200 foo.swap(bar); std::cout << "foo contains:"; for (unsigned i=0; i<foo.size(); i++) std::cout << ' ' << foo[i];//200,200,200,200,200 std::cout << '\n'; std::cout << "bar contains:"; for (unsigned i=0; i<bar.size(); i++) std::cout << ' ' << bar[i];//100,100,100 std::cout << '\n';

7.operator[]

运算符[]重载。可以通过数组下标访问元素。在swap代码中打印部分已经使用。

http://www.jsqmd.com/news/1103119/

相关文章:

  • 如何轻松获取国家中小学智慧教育平台电子课本?这款下载工具帮你一键搞定
  • 极简 Docker 入门笔记
  • sql语法 - 根据条件, 生成额外一个新字段 CASE WHEN ELSE END AS
  • 6DoF运动追踪:IMU与微控制器的硬件协同设计
  • 论文AI写作模式有哪些?4种模式适用不同场景
  • 抖音批量下载工具终极指南:3分钟掌握高效内容收集技巧
  • # GitHub 13 万星爬虫神器 Firecrawl,彻底免 Key 接入全网数据
  • Python requests 配置 HTTP、HTTPS、SOCKS5 代理:参数、认证与排错
  • 【企业级AI选型生死线】:Claude的128K原生上下文与ChatGPT的分块处理,在合同审查、代码重构、学术写作中的真实性能断层曝光
  • 别再凭感觉选模型了!:Claude与ChatGPT在中文语义一致性、逻辑链完整性、幻觉抑制率上的硬核对比(附可复现Prompt与评估脚本)
  • 【2024最严苛横向评测】:ChatGPT与Gemini在真实生产环境下的5大硬指标对决——API吞吐量、上下文窗口稳定性、长链逻辑错误率、幻觉抑制率、冷启动耗时(附可复现测试脚本)
  • PCT专利申请有必要布局吗?企业海外专利规划与靠谱代理甄选指南
  • 2026上海工业快速门采购攻略:PVC软帘自动升降门靠谱厂家甄选
  • 八部门新政发布,工业互联网迈入“智能体”新阶段
  • 从JSP报错到钓鱼网站反制:一次基于Tomcat信息泄露的实战分析
  • 新手程序员必看!5步打造你的AI小工作流,效率倍增,收藏起来反复用!
  • IDR终极指南:掌握Delphi反编译的交互式重构利器
  • 线下营销落地怎么谈?对比润博一站式总包与普通多供应商对接差异
  • 告别Allure CLI:Python脚本内动态生成HTML测试报告全攻略
  • GEO会对转化率带来怎样的作用效果?
  • WorkshopDL终极指南:无需Steam客户端,轻松下载创意工坊模组的秘密武器
  • 基于IOC规则的应急响应工具:从Log4Shell实战到通用化框架设计
  • 为什么头部金融科技公司集体切换至通义千问?——揭秘ChatGPT在金融文档解析中漏检率高达41.7%的底层机制
  • LangChain4j Guardrails(护栏机制)—— 小白也能懂的通俗版
  • 从零开始!用Python打造你的第一个Agent,小白也能轻松收藏学习大模型原理
  • 别再盲目订阅了!——从Token成本、RAG延迟、API稳定性到合规审计,DeepSeek与ChatGPT的6维ROI对比表(限业内高管内部流通版)
  • 鸣潮自动化助手:3大核心功能帮你解放双手,专注游戏乐趣
  • 深度学习模型推理框架_SNPT 对比 TRT
  • 基于Si4731与PIC18的数字收音机开发指南
  • PDF 高级自动化实操:用 OpenClaw 批量加水印、加密、OCR 识别、拆分合并