class vector{
public:
vector(int s);
double& operator[](int i);
int size();
private:
double∗ elem;
int sz;
};
这条线在C ++编程原理中意味着什么,我感到困惑在哪里&使用和[](int i)也很混乱。
答案 0 :(得分:5)
它定义了运算符[]
,它返回对向量中第n个元素的double值的引用。
通过这种方式,您可以读取和写入特定元素
假设您有以下内容:
vector my_vector(1000);
使用操作double value = my_vector[3]
,您可以读取第4个元素的值
使用操作my_vector[6] = 6.7
,您可以设置第7个元素的值。
答案 1 :(得分:2)
它允许您在矢量对象上使用[]参数。
它向您显示它接收一个int作为参数(double element = vector1[2];
),并返回一个double,因此如下所示的行将是有效的:
vector1[2] = 4; // since the returned value is a reference
或
vector
其中vector1是TryRequest
类的实例。
答案 2 :(得分:1)
double& operator[](int i);
此行在C ++中的含义
此行声明了operator[]
(也称为“数组下标运算符”)实现,该实现通常用于索引容器类型(例如std::vector
,std::map
和其他)。想象一下,公共sequence[0]
可以访问对序列的第一个元素的引用。
其中&使用
在C ++中,附加到类型的&
字符表示“表示对类型Foo
的引用的类型”。例如,int&
是int
的引用,而double&
是对double的引用。
现在,为什么要从operator[]
返回引用?答案是:因为您可能想要编写这样的代码......
sequence[0] = 42;
...为此,您需要operator[]
实现来返回左值。恰好是引用是左值!你为什么需要一个左值?一个简单的答案是“因为作业的左侧必须是左值”。在了解左值和左值时,我发现this article很有帮助。
和[](int i)也很混乱。
您解析此错误。以这种方式看待声明:
double&
operator[]
(int i)
第一部分是返回类型,第二部分是你正在实现的函数的名称,第三部分是你的函数所用的参数。
operator[]
的实现应采用整数值(int
,unsigned
,size_t
等)作为参数(免责声明:不确定,找不到“你应该”参考这个)。这就是您的参数列表为(int)
。
进一步阅读:转到http://en.cppreference.com/w/cpp/language/operators并查找“数组下标运算符”。