最近写一个入门级别的聊天室程序的时候

用到动态分配空间,第一联想到的就是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 注意事项相关推荐

  1. c++ vector注意事项

    1.vector<int> vec(10)和vector<int> vec{10} 不同,前者vec有10个元素0,后者vec有一个元素10 2.vec.clear()和swa ...

  2. c++ vector 初始化_什么?还不懂c++vector的用法,你凭什么勇气来的!

    作者:良知犹存 转载授权以及围观:欢迎添加微信公众号:羽林君 前言 今天继续肝C++,一入C++深似海.越学越有意思.今天给大家带来一篇c++vector的介绍,难以置信这篇文章写了我三天,不过总算整 ...

  3. C++ 【vector模拟实现】

    目录 1.vector注意事项 2.vector基本模拟实现 insert迭代器失效 erase迭代器失效场景 erase正确写法 总结:insert/erase不要直接访问pos,必须先更新pos位 ...

  4. c语言中vector的用法,C++ vector使用方法

    在 c++ 中,vector 是一个十分有用的容器.它能够像容器一样存放各种类型的对象,简单地说,vector是一个能够存放任意类型的动态数组,能够增加和压缩数据. C++ 中数组很坑,有没有类似 P ...

  5. Qt工作笔记-QList (链表) QVector (数组)【转载】

    原文地址:https://blog.csdn.net/qq_33266987/article/details/53333373 C++中的list 和 vector (1). stl提供了三个最基本的 ...

  6. QList (链表) QVector (数组)

    QList (链表) & QVector (数组) C++中的list和vector stl提供了三个最基本的容器:vector/list/deque. vector和built-in数组类似 ...

  7. java学习笔记第三部分

    接口 接口就是给出一些没有实现的方法,封装到一起,到某个类要使用的时候,再根据具体情况把这些方法写出来. interface 接口名{//属性//方法(1. 抽象方法 2.默认实现方法 3.静态方法) ...

  8. Java基础笔记(4w字长文警告)

    Java核心笔记 提示:点击右上角关注博主,收获共同话题 下面是我的个人学习Java的笔记,现在分享给广大友友: 文章目录 Java核心笔记 0.导论 标柱注释: 学习方法: 1 java概述 1.1 ...

  9. C++面经之应届生找工作的“狗日”过程记录

    C++面经之应届生找工作的"狗日"过程记录 .先附上我的座右铭: "不是因为看到希望才去坚持,而是坚持才会有希望." . 吐槽一下: 2020注定是个苦逼年,坐 ...

最新文章

  1. mysql or的效率_Mysql比较exists与in以及or的效率分析
  2. SQL Server故障排除圣经
  3. java 继承先后顺序_Java中的继承关系的加载顺序
  4. poj3581Sequence(后缀数组)
  5. 深度增强学习方向论文整理
  6. mysql 修改表结构提示 MySQL said: Table is read only
  7. Metadata Service 最高频的应用 - 每天5分钟玩转 OpenStack(164)
  8. node.js 和 HTML5-Canvas 结合实现截图上传交互
  9. lwip网络通信socket_lwIP在Socket模式下接口:BSD Socket API
  10. Lua 学习笔记(四)语句与控制结构
  11. Android JNI学习(六)——Java与Native实战演习
  12. python函数装饰器详解_Python语言函数装饰器用法实例详解
  13. Unicode字符需要几个字节来存储?
  14. 3dmax 2022卸载方法,怎么完全彻底卸载删除清理干净3dmax 2022各种残留注册表和文件?
  15. 微信小程序转发分享及好友点击进入传参
  16. win10重装系统后连不上公司服务器,win10重装系统后连不上网有什么解决方法
  17. local_listener参数(1)---elaine
  18. linux搭建未转变者服务器,未转变者怎么创建服务器_未转变者(Unturned)开服教程_快吧单机游戏...
  19. 【日常吐槽 · 第七期】进击的博客
  20. android高德地图关键字搜索,关键字搜索-POI搜索-示例中心-JS API 示例 | 高德地图API...

热门文章

  1. sts 的js代码不变色_[黑科技] 使用 Laravel Livewire 来构建实时搜索功能(不使用一行 JS 代码)...
  2. mysql工作中遇到的问题_mysql - 工作中碰到的问题
  3. 手机端java编辑器验证正确_java – 使用编辑器验证表的单元格
  4. php中案值传递和安引用传递,PHP里的值传递与引用传递
  5. 小程序获取城市经纬度_微信小程序获取当前所在城市的方法
  6. 实践教程 | Pytorch 模型的保存与迁移
  7. VMware 虚拟机扩展Ubuntu系统磁盘空间
  8. VS2008无法下断点调试的若干解决办法
  9. NOIP2015DAY2T2子串
  10. 课程作业02实验报告