我希望你能重载一个“>>”运算符,使得任何人都可以输入任意数量的值。
这是我正在处理的任务要求:
运算符“>>”应该期望看到以下形式的输入: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,但是没有找到有人使用它的好例子来满足我的需求。
希望我提供的信息足以回答问题。如果不够,请告诉我。
非常感谢您的时间。
vX = {1,2,3,4}
;但如果你非要用这种特定语法,那么就没有办法了。 - Benjamin Lindleyd v1 v2 ... vd
是指运行时的用户输入,而不是源代码。 - Benjamin Lindley