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

C++从零开始的打怪升级之路(day24)

这是关于一个普通双非本科大一学生的C++的学习记录贴

在此前,我学了一点点C语言还有简单的数据结构,如果有小伙伴想和我一起学习的,可以私信我交流分享学习资料

那么开启正题

今天分享的是关于vector的一些函数

1.构造函数

vector()                       // 无参构造函数
vector(size_t typen,const vaule_type& val = vaule_ type())      //构造并初始化n个val
vector(const vector& x)                                    //拷贝构造
vector(inputlterator first,inputlterator last)                //使用迭代器进行初始化构造
void vectorTest1()
{vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(3);vector<int> v2(v1);vector<int> v3(10, 1);vector<int> v4(v1.begin() + 1, v1.end());
}

2.关于iterstor的使用

begin() + end()       //获取第一个数据的位置与获取最后一个元素后面的位置
rbegin() + rend()     //获取第一个元素的前面的位置与获取最后一个元素的位置
void vectorTest2()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);vector<int>::const_iterator it = v.begin();while (it != v.end()){//++(*it);cout << *it << " ";++it;}cout << endl;
}

如果是const迭代器就不能修改,一般迭代器可以进行修改 

void vectorTest3()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);vector<int>::reverse_iterator it = v.rbegin();while (it != v.rend()){//++(*it);cout << *it << " ";++it;}cout << endl;
}

反向迭代器的名字加上了reverse_ ,修改规则与上面同样的

void vectorTest4()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);for (auto e : v){cout << e << " ";}cout << endl;
}
void vectorTest4()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);for (auto& e : v){e++;cout << e << " ";}cout << endl;
}

 当然,支持迭代器就支持范围for,值得注意的是,范围for根据是否需要写数据可以选择加上或者不加上&

3.空间问题

size()        //获取数据的个数
capacity()    //获取容量的大小
empty()       //判断是否为空
resize()      //改变vector的size
reserve()     //改变vector的capacity
void vectorTest5()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);cout << v.size() << endl;cout << v.capacity() << endl;cout << v.empty();v.resize(2);v.reserve(10);
}

 空间的管理与string相似,这里不再详说

4.增删查改

push_back()      //尾插
pop_back()       //尾删
find()           //查找
insert()         //在pos位置前插入
erase()          //删除pos的位置
swap()           //交换两个vector的数据空间
operator[]       //像数组一样访问

 注意find不是vector自身提供的方法,是STL提供的算法

void vectorTest6()
{vector<int> v;v.push_back(1);v.push_back(2);v.push_back(3);v.push_back(4);v.push_back(5);v.pop_back();vector<int>::iterator pos = find(v.begin(), v.end(), 3);if (pos != v.end()){v.insert(pos, 10);}pos = find(v.begin(), v.end(), 2);v.erase(pos);for (auto& e : v){cout << e << " ";}cout << endl;
}

 注意,insert是前插

void vectorTest7()
{vector<int> v1;v1.push_back(1);v1.push_back(2);v1.push_back(3);v1.push_back(4);vector<int> v2;v2.push_back(10);v2.push_back(20);v2.push_back(30);v2.push_back(40);v2.push_back(50);swap(v1, v2);
}

 注意:vs下capacity是按1.5倍增长的,g++是按2倍增长的,它们的STL版本不一样

新手写博客,有不对的位置希望大佬们能够指出,也谢谢大家能看到这里,让我们一起学习进步吧!!

http://www.lryc.cn/news/292068.html

相关文章:

  • 用 CanvasKit 实现超级丝滑的原神地图(已开源)!!!
  • MySQL原理(三)锁定机制(2)表锁行锁与页锁
  • 设计模式⑩ :用类来实现
  • Flutter 解决ExpansionTile上下分割线问题,以及title撑满问题
  • 数据可视化 pycharts实现时间数据可视化
  • 深度强化学习(王树森)笔记11
  • python 实现 macOS状态栏 网速实时显示
  • 【C++】开源:Windows图形库EasyX配置与使用
  • 微信小程序 全局变量键值对map对象
  • 20240131在WIN10下配置whisper
  • 3338 蓝桥杯 wyz的数组IV 简单
  • git Filename too long
  • MySQL数据库-理论基础
  • 立体边界,让arcgis出图更酷炫一些
  • 【C++】 C++入门—内联函数
  • 软件工程知识梳理2-需求分析
  • mac裁剪图片
  • Compose | UI组件(十) | Box,Surface - 帧布局
  • 种草日记|林曦老师的冬日好物分享
  • 【算法与数据结构】139、LeetCode单词拆分
  • NLP任务之Named Entity Recognition
  • NUXT3项目实践总结
  • 中科星图——2020年全球30米地表覆盖精细分类产品V1.0(29个地表覆盖类型)
  • Tomcat 部署项目时 war 和 war exploded区别
  • 【开源】SpringBoot框架开发天然气工程运维系统
  • go数据操作-MySQL
  • 基于node.js和Vue3的医院挂号就诊住院信息管理系统
  • Django如何调用机器学习模型进行预测
  • Web3.0初探
  • 在windows和Linux中的安装 boost 以及 安装 muduo 和 mysql