引用的定义不多说,直接看做变量的别名就可以了。有一天写着写着代码,突然想到,如果对vector里某个元素设置引用后,将这个元素从vector里删除会怎么样?我思考了下,认为那个元素会被删除,但是引用还是会指向原来的内存,也就是说这里可能会出现安全问题。光想是不行的,所以速度写了个小测试:

#include<iostream>
#include<vector> class Test{
public:
Test() {
a = ;
} ~Test() {
a = ;
} int a;
}; int main()
{
std::vector<Test> vec;
vec.push_back(Test()); Test &t = vec.back();
std::cout << t.a << std::endl; vec.pop_back(); std::cout << t.a << std::endl; return ;
}

  输出如下:


  是的,很明显,引用指向的元素被析构了。以前我是从没注意过这一块的,嗯,又发现了一个日常可能出错的地方。

引用vector里的元素被删除后,引用会怎么样?的更多相关文章

  1. 【C++】去除vector里重复元素的方法比较

    背景:构造一个无重复的白名单,之后要在里面进行二分查找.故要求名单有序,且无重复,并且要进行二分查找,所以要采用有:随机访问迭代器类型的容器.这类容器有vector,array,deque.显然要ve ...

  2. C++ vector 删除一个指定元素 和 find 一个指定元素以及遍历删除、 map遍历删除元素和删除find到的元素

    vector: 1.delete element 转载:http://www.cnblogs.com/xudong-bupt/p/3522457.html #include <vector> ...

  3. STL—— 容器(vector)元素的删除

    1. clear() 将整个 vector 都删除 使用 vectorname.clear() 可以将整个vector 中的元素全部删除,但是内存不会释放,如下代码: 1 #include <i ...

  4. vector中的元素删除

    删除vector中的元素,最容易的方法就是使用vector的erase()函数. vector vec;for ( vector::iterator iter = vec.begin(); iter! ...

  5. 数组元素的删除 【vector】

    7-5 数组元素的删除(5 分) 完成数组元素的移动功能:假设数组有n个元素,输入一个数x,把数组的第x个位置的元素删除了,后面的元素依次前进一个位置. 重复若干次这样的删除,得到最后的结果. 输入格 ...

  6. vector容器中添加和删除元素

    添加元素: 方法一: insert() 插入元素到Vector中 iterator insert( iterator loc, const TYPE &val ); //在指定位置loc前插入 ...

  7. iOS数组的去重,判空,删除元素,删除重复元素 model排序 等

    一: 去重 有时需要将NSArray中去除重复的元素,而存在NSArray中的元素不一定都是NSString类型.今天想了想,加上朋友的帮助,想到两种解决办法,先分述如下. 1.利用NSDiction ...

  8. 不要在 foreach 循环里进行元素的 remove/add 操作。remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁

    不要在 foreach 循环里进行元素的 remove/add 操作.remove 元素请使用 Iterator 方式,如果并发操作,需要对 Iterator 对象加锁. 正例: Iterator&l ...

  9. 为什么阿里巴巴Java开发手册中强制要求不要在foreach循环里进行元素的remove和add操作?

    在阅读<阿里巴巴Java开发手册>时,发现有一条关于在 foreach 循环里进行元素的 remove/add 操作的规约,具体内容如下: 错误演示 我们首先在 IDEA 中编写一个在 f ...

随机推荐

  1. wls应用命令部署与卸载

    1.查看wls节点运行状态 [root@localhost lib]# jps [root@localhost lib]# ss -tnlp|grep 23705 2.配置wls环境变量 [deplo ...

  2. -fPIC编译选项

    -fPIC 作用于编译阶段,告诉编译器产生与位置无关代码(Position-Independent Code),则产生的代码中,没有绝对地址,全部使用相对地址,故而代码可以被加载器加载到内存的任意位置 ...

  3. 图片存进Mat类中,然后调用图像矩阵元素

    Mat img = imread();//灰度图 imwrite("origin.png",img); if(img.empty()) { cout << " ...

  4. puppeteer - 操作支付宝报“操作频繁”错误的思考

    我这里想要实现的是通过转账到支付宝的方式判断一个手机号是否注册过支付宝.但查询收款人的网络请求很复杂分析不出来,使用 puppteer 也是没有解决 "操作频繁" 的问题(应该还有 ...

  5. 阶段3 2.Spring_07.银行转账案例_1 今日课程内容介绍

    1.完善我们的account案例 2.分析案例中问题 3.回顾之前讲过的一个技术:动态代理 4.动态代理另一种实现方式 5.解决案例中的问题 6.AOP的概念 7.spring中的AOP相关术语 8. ...

  6. Cocos2d-X多线程(4) 在子线程中进行网络请求

    新版本的android系统已经不允许在UI线程中进行网络请求了,必须新建一个线程. 代码实操: 头文件: #ifndef __TestThreadHttp_SCENE_H__ #define __Te ...

  7. LeetCode.985-查询后偶数的总和(Sum of Even Numbers After Queries)

    这是悦乐书的第370次更新,第398篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第232题(顺位题号是985).有一个整数数组A和一个查询数组queries. 对于第i ...

  8. 项目连接oracle报错:listener does not currently know of SID given in connect descriptor

    今天练习用IDEA搭建了一个ssm框架,数据库是oracle,在执行mybatis-generator时,一直报错listener does not currently know of SID giv ...

  9. mariadb数据库——关联、视图、事务、索引、外键

    1.关联 1)连接查询(内关联) inner join ... on 两个表连接查询 select * from students inner join classes 查询能够对应班级的学生以及班级 ...

  10. vps分区 挂载wdcp 的/www目录大小调整或增加分区/硬盘的方法

    http://www.wdlinux.cn/bbs/viewthread.php?tid=3574&highlight=%B7%D6%C7%F8 http://www.80vps.com/ne ...