为什么在 C++ 中的容器中存储引用(而不是指针)不起作用? [英] Why does storing references (not pointers) in containers in C++ not work?

查看:22
本文介绍了为什么在 C++ 中的容器中存储引用(而不是指针)不起作用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

在我的程序中,我有一个 STL 集.

In my program I have a STL set.

set<string> myStrings;

为了提高我的代码的效率,我将它改为持有,只有指针.(我不需要存储实际的字符串副本.)

To improve the efficiency of my code I changed it to hold, only pointers. (I don't need actual string copies to be stored.)

set<string*> myStrings;

我已经读到,在可能的情况下用引用替换指针是一个很好的做法.(当然,仅当不需要指针的实际功能时.)

I have read that it is a good practice to substitute pointers with references when possible. (Of course, only if the actual functionality of a pointer is not needed.)

set<string&> myStrings;

不过,后者给了我很多编译器错误.为什么不能使用引用作为容器元素?

The latter one gives me a lot of compiler errors, though. Why is it not possible to use references as container elements?

推荐答案

容器存储对象.引用不是对象.

Containers store objects. References are not objects.

C++11 规范明确规定 (§23.2.1[container.requirements.general]/1):

The C++11 specification clearly states (§23.2.1[container.requirements.general]/1):

容器是存储其他对象的对象.

Containers are objects that store other objects.

这篇关于为什么在 C++ 中的容器中存储引用(而不是指针)不起作用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆