C++ Stl 中容器使用的小技巧及坑 1
Abstract Keywords C++ Stl
Citation Yao Qing-sheng.C++ Stl 中容器使用的小技巧及坑 1.FUTURE & CIVILIZATION Natural/Social Philosophy & Infomation Sciences,20210422. https://yaoqs.github.io/20210422/c-stl-zhong-rong-qi-shi-yong-de-xiao-ji-qiao-ji-keng-1/
以 vector 为例,在使用 auto 关键字重命名容器时容易遇到,使用新命名变量操作容器时,明明已经 clear 或 erase 掉了容器,但是再次绑定使用容器时发现容器仍然有数据,未删除数据。示例代码如下:
1 | using namespace std; |
究其原因是因为
auto vec=asdfghjklqwertyuio[i][j];
采用了拷贝机制,vec为asdfghjklqwertyuio[i][j]
的副本,对vec的操作并未作用到原始容器中,而只是对vec的操作。解决方法:
使用左值引用(建议)
auto& vec=asdfghjklqwertyuio[i][j];
使用骚操作指针
auto vec=&asdfghjklqwertyuio[i][j];
后期使用容器时使用(*vec).begin()
等等。
————————————————
版权声明:本文为 CSDN 博主「紫霄宫中布道者」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。原文链接:https://blog.csdn.net/yaokingson/article/details/116015000
Author: Yao Qing-sheng Blog: https://yaoqs.github.io/ Email: 350788415@qq.com
Address:Department of Natural/Social Philosophy & Infomation Sciences, CHINA
Biography...
Address:Department of Natural/Social Philosophy & Infomation Sciences, CHINA
Biography...
转载或引用本文时请遵守许可协议,注明出处、不得用于商业用途!
Like this article? Support the author with