当前位置: 首页 > 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.gsyq.cn/news/1615084.html

相关文章:

  • 如何轻松获取国家中小学智慧教育平台电子课本?这款下载工具帮你一键搞定
  • # GitHub 13 万星爬虫神器 Firecrawl,彻底免 Key 接入全网数据
  • 论文AI写作模式有哪些?4种模式适用不同场景
  • 抖音批量下载工具终极指南:3分钟掌握高效内容收集技巧
  • 从JSP报错到钓鱼网站反制:一次基于Tomcat信息泄露的实战分析
  • WorkshopDL终极指南:无需Steam客户端,轻松下载创意工坊模组的秘密武器
  • 别再盲目订阅了!——从Token成本、RAG延迟、API稳定性到合规审计,DeepSeek与ChatGPT的6维ROI对比表(限业内高管内部流通版)
  • 鸣潮自动化助手:3大核心功能帮你解放双手,专注游戏乐趣
  • Awesome .NET:21000 Star 的 .NET 生态资源清单
  • 【企业级AI选型生死线】:当你的客户要求“等保三级+数据不出境+审计留痕”,ChatGPT与文心一言仅1家能闭环交付(含工信部备案编号验证路径)
  • Minecraft 1.21终极中文汉化指南:轻松解锁Masa模组全家桶完整功能
  • ImDisk虚拟磁盘驱动器:Windows系统虚拟磁盘管理的终极指南
  • test01
  • 小说下载终极指南:如何用novel-downloader永久保存你的数字图书馆
  • 抖音批量下载工具深度解析:从单视频到用户主页的完整解决方案
  • Xshell连接Ubuntu虚拟机实战指南
  • 泰安 EM3 三维植被网供应商揭秘!他们究竟有何独特之处?
  • Markdown Viewer:浏览器内实时渲染引擎带来的文档工作流效率跃迁
  • 现在不看就晚了:工信部信通院最新《大模型能力评估报告》曝光——DeepSeek在中文逻辑推理榜单登顶,ChatGPT未进前三(附原始评测代码)
  • Windows系统文件AppResolver.dll丢失找不到问题解决
  • Zotero插件市场:3步彻底告别繁琐的手动插件安装
  • 3分钟搞定股票数据获取:MOOTDX量化分析终极指南
  • 期权量化交易系列教程(二):期权基础——规则、数据与定价模型
  • MagiskHide Props Config完整指南:7个步骤轻松伪装Android设备指纹
  • 鸣潮自动化助手:3大核心功能解放你的游戏时间
  • 告别分化紊乱、批次不稳!武汉云克隆犬骨骼肌原代细胞,筑牢肌肉研究硬核根基
  • Gofile批量下载神器:5分钟告别手动下载的烦恼
  • 容错与韧性设计:断点续传、补偿事务与幂等操作实现
  • 高效抖音内容下载方案:基于API的多线程批量下载工具
  • 如何在 C# 中灵活调整 Excel 表格列的位置