我有一个关于在C++中运算符重载的问题。运算符重载:C++
对于任务,我必须编写一个包含数组的类,有点像Java中的ArrayList。
我必须做的事情之一是跟踪数组的大小。大小是包含的元素的数量,而容量是在类需要扩展数组之前可以包含的最大数量。
客户端代码指定调用构造函数时的大小。但是,当添加新的元素时,我必须找出一种方法来改变大小。
我的老师说了一些关于能够为平等的不同方面重载操作符的内容。这是真的吗,还是我误解了她?如果这有效,这将是我的问题的最佳解决方案。
我的[]操作符重载电流是:
int & ArrayWrapper::operator [] (int position){
if(position == _size){
if(_size == _capacity){
changeCapacity(_capacity+10);
}
}
return _array[position];
}
这工作正常进行检索,但我想它的话,如果有人从“=的左手边称它为'然后检查是否需要扩大规模。
编辑:如果这不是一个真实的东西,任何人都可以想出不同的解决方案的问题?我想到的一个解决方案是每次调用getSize()方法时都会遍历整个数组,但我真的宁愿不使用该解决方案,因为它看起来很俗气。
编辑:澄清,我不问是否我的数组扩展工作。每次添加新元素时,我都需要添加1。例如,如果客户端创建一个大小为15和容量为25的数组,然后尝试向Array [15]添加一些内容,那么应该将大小增加到16.我想知道是否有一种方法可以用于重载。
这听起来有点奇怪。你的意思是,如果你用大小“10”来构造它,并且有人要求获得“100000”,那么你必须将其扩展到“100001”的大小,并用10到99999之间的元素填充一些东西? – juanchopanza
是的,这就是他的意思。您需要考虑要求的内容与当前矢量大小之间的差异。 – WhozCraig