私はこれを理解しようと一日中頭を悩ませてきました。私が見る限り、オーバーロードされた + 演算子と - 演算子でコードが既に書かれているので、 [] 演算子をオーバーロードする方法を理解する必要があります。それらの中に値が配置され、リストを正しくトラバースし、情報を指します..[5] 私が言ったように、私が言ったように、私はほとんどコードを+と-に書いておく必要があるようです...
typename doublyLinkedList<T>::iterator doublyLinkedList<T>::iterator::operator+(const int amount) const {
doublyLinkedList<T>::iterator tempClone(*this);
tempClone.pastBoundary=false;
T i;
if(amount < 0)
{
return this->operator-(-amount);
}
for(i=0; i < amount; i++)
{
if(tempClone.current->forward == NULL)
{
tempClone.pastBoundary =true;
}else
{
++tempClone;
}
}
if(tempClone.pastBoundary == true)
{
return *this;
}else
{
return tempClone;
}
}
template <typename T>
typename doublyLinkedList<T>::iterator doublyLinkedList<T>::iterator::operator-(const int amount) const {
doublyLinkedList<T>::iterator tempClone(*this);
tempClone.pastBoundary=false;
T i;
if(amount < 0)
{
return this->operator+(-amount);
}
for(i=0; i < amount; i++)
{
if(tempClone.current->backward == NULL)
{
tempClone.pastBoundary =true;
}else
{
--tempClone;
}
}
if(tempClone.pastBoundary == true)
{
return *this;
}else
{
return tempClone;
}
}
template <typename T>
T& doublyLinkedList<T>::iterator::operator[](const int index) {
doublyLinkedList<T>::iterator tempClone(*this);
if(index >= 0){
return this->operator+(index);
}else{
return this->operator-(index);
}