我希望重载“>>”运算符,以便有人可以输入任意数量的值。
这是我正在处理的作业的逐字逐句要求:
运算符>> 应该期望看到以下形式的输入:d v1 v2 … vd ,其中 d 是向量的维数,每个 vi 是向量中与索引 i 对应的值。
我假设它会起作用的方式是第一个值是数组的大小(包含在对象 Vex 中),其余的是元素。所以如果他们要输入
Vex vX;
4, 1, 2, 3, 4 >> vX;
vX 将创建一个大小为 4 的动态数组,其中包含数字 1-4。
我挂断的主要部分是如何对 >> 重载进行编程,因为参数的数量是可变的。
理想情况下,我会对...的效果有一个解决方案(这只是一个例子):
std::istream& Vex::operator>>(istream& is, const Vex&){
/*
Assume int * data has been previously declared in constructor
data = new int[iterator[0]]
create iterator of input for istream
For n from 1 to iterator[0]...
data[n] = iterator[n]
*/
}
我只是不知道该怎么做。我一直在环顾四周,找到了 istream_iterator,但我找不到任何人以我需要的方式使用它的好例子。
我希望我提供的信息足以回答这个问题。如果没有,请告诉我。
非常感谢您的宝贵时间。