vector 注意事项
最近写一个入门级别的聊天室程序的时候
用到动态分配空间,第一联想到的就是vector容器
但是客户端连接的时候经常出崩溃的现象
经过排查,原来是传递了容器指针!
查资料才知道,当添加新的数据进去的时候
vector容器在重新分配空间时它会做这样的动作:
首先,vector 会申请一块更大的内存块;
然后,将原来的数据拷贝到新的内存块中;
其次,销毁掉原内存块中的对象(调用对象的析构函数);
最后,将原来的内存空间释放掉。
下面是 简单的代码和最后的结果
#include <iostream>
#include <algorithm>
#include <vector>
#include <list>
using namespace std;int main(int argc, char* argv[])
{vector<int> vs;vs.push_back(1);cout<<&vs[0]<<endl;vs.push_back(2);cout<<&vs[0]<<" "<<&vs[1]<<endl;list<int> vv;vv.push_back(1);cout<<&vv.front()<<endl;vv.push_back(2);cout<<&vv.front()<<" " <<&vv.back() <<endl;vv.clear();vs.clear();return 0;
}
vector容器添加数据的时候,原来的地址会改变,所以想要调用,只能使用vs[0],这种方式
而list不会出现地址改变,因为它的内存的分开的
却没有vector使用的灵活!
vector 注意事项相关推荐
- c++ vector注意事项
1.vector<int> vec(10)和vector<int> vec{10} 不同,前者vec有10个元素0,后者vec有一个元素10 2.vec.clear()和swa ...
- c++ vector 初始化_什么?还不懂c++vector的用法,你凭什么勇气来的!
作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君 前言 今天继续肝C++,一入C++深似海.越学越有意思.今天给大家带来一篇c++vector的介绍,难以置信这篇文章写了我三天,不过总算整 ...
- C++ 【vector模拟实现】
目录 1.vector注意事项 2.vector基本模拟实现 insert迭代器失效 erase迭代器失效场景 erase正确写法 总结:insert/erase不要直接访问pos,必须先更新pos位 ...
- c语言中vector的用法,C++ vector使用方法
在 c++ 中,vector 是一个十分有用的容器.它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. C++ 中数组很坑,有没有类似 P ...
- Qt工作笔记-QList (链表) QVector (数组)【转载】
原文地址:https://blog.csdn.net/qq_33266987/article/details/53333373 C++中的list 和 vector (1). stl提供了三个最基本的 ...
- QList (链表) QVector (数组)
QList (链表) & QVector (数组) C++中的list和vector stl提供了三个最基本的容器:vector/list/deque. vector和built-in数组类似 ...
- java学习笔记第三部分
接口 接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来. interface 接口名{//属性//方法(1. 抽象方法 2.默认实现方法 3.静态方法) ...
- Java基础笔记(4w字长文警告)
Java核心笔记 提示:点击右上角关注博主,收获共同话题 下面是我的个人学习Java的笔记,现在分享给广大友友: 文章目录 Java核心笔记 0.导论 标柱注释: 学习方法: 1 java概述 1.1 ...
- C++面经之应届生找工作的“狗日”过程记录
C++面经之应届生找工作的"狗日"过程记录 .先附上我的座右铭: "不是因为看到希望才去坚持,而是坚持才会有希望." . 吐槽一下: 2020注定是个苦逼年,坐 ...
最新文章
- mysql or的效率_Mysql比较exists与in以及or的效率分析
- SQL Server故障排除圣经
- java 继承先后顺序_Java中的继承关系的加载顺序
- poj3581Sequence(后缀数组)
- 深度增强学习方向论文整理
- mysql 修改表结构提示 MySQL said: Table is read only
- Metadata Service 最高频的应用 - 每天5分钟玩转 OpenStack(164)
- node.js 和 HTML5-Canvas 结合实现截图上传交互
- lwip网络通信socket_lwIP在Socket模式下接口:BSD Socket API
- Lua 学习笔记(四)语句与控制结构
- Android JNI学习(六)——Java与Native实战演习
- python函数装饰器详解_Python语言函数装饰器用法实例详解
- Unicode字符需要几个字节来存储?
- 3dmax 2022卸载方法,怎么完全彻底卸载删除清理干净3dmax 2022各种残留注册表和文件?
- 微信小程序转发分享及好友点击进入传参
- win10重装系统后连不上公司服务器,win10重装系统后连不上网有什么解决方法
- local_listener参数(1)---elaine
- linux搭建未转变者服务器,未转变者怎么创建服务器_未转变者(Unturned)开服教程_快吧单机游戏...
- 【日常吐槽 · 第七期】进击的博客
- android高德地图关键字搜索,关键字搜索-POI搜索-示例中心-JS API 示例 | 高德地图API...
热门文章
- sts 的js代码不变色_[黑科技] 使用 Laravel Livewire 来构建实时搜索功能(不使用一行 JS 代码)...
- mysql工作中遇到的问题_mysql - 工作中碰到的问题
- 手机端java编辑器验证正确_java – 使用编辑器验证表的单元格
- php中案值传递和安引用传递,PHP里的值传递与引用传递
- 小程序获取城市经纬度_微信小程序获取当前所在城市的方法
- 实践教程 | Pytorch 模型的保存与迁移
- VMware 虚拟机扩展Ubuntu系统磁盘空间
- VS2008无法下断点调试的若干解决办法
- NOIP2015DAY2T2子串
- 课程作业02实验报告