gpt4 book ai didi

c++ - 即使后缀和赋值都重载,运算符重载也不起作用

转载 作者:行者123 更新时间:2023-11-28 03:28:33 24 4
gpt4 key购买 nike

这是类定义

template <typename key_type, typename mapped_type>
class mymap {
public:
node<key_type, mapped_type> *root;

/* Utility Functions */
int height(node<key_type, mapped_type> *);
int getBalance(node<key_type, mapped_type> *);

node<key_type, mapped_type> *newNode(key_type, mapped_type);
node<key_type, mapped_type> *rightRotate(node<key_type, mapped_type> *);
node<key_type, mapped_type> *leftRotate(node<key_type, mapped_type> *);
node<key_type, mapped_type> *insert_node(node<key_type, mapped_type> *, key_type, mapped_type);
node<key_type, mapped_type> *minValueNode(node<key_type, mapped_type> *);
node<key_type, mapped_type> *deleteNode(node<key_type, mapped_type> *, key_type);

void insert(key_type, mapped_type);

// Constructor
mymap()
{
root = NULL;
}


class iterator {
public:

node<key_type,mapped_type> *ptr;

iterator(){
ptr = NULL;
}
/*void iterator(iterator &x) {
ptr = x.ptr;

}*/

void operator++(int) {
ptr = increment(ptr);
}

void operator=(const iterator &it) {
ptr = it.ptr;
//return (*this);
}


/*void operator--(int) {
ptr = decrement(ptr);
}*/

void operator++() {
ptr = increment(ptr);
}

/*
node <key_type,mapped_type>* operator--() {
return *(decrement(ptr));
}

bool operator !=(iterator itr) {
return (ptr != itr.ptr);
}


bool operator ==(iterator itr) {
return (ptr == itr.ptr);
}
*/
};

iterator begin() {

iterator it ;
node<key_type,mapped_type> * tmp = root;

while (tmp->left != NULL)
tmp = tmp->left;

it.ptr = tmp;
return it;
}

iterator end() {
iterator it;
it.ptr = NULL;
return it;
}

};

主要是这段代码不会编译并在第 10 行给出错误。可能是因为我在重载 postfix++ 和赋值运算符时试图做错事。

mymap<int, int> A;

A.insert(1, 5);
A.insert(2, 5);
A.insert(3, 5);
A.insert(4, 5);

mymap<int,int> :: iterator it = A.begin();
mymap<int,int> :: iterator it1 = A.end();
it1 = it++;

请帮忙 :(。这是我正在尝试完成的 map 的 AVL 实现。如果需要,这是完整 map 文件的链接。 https://www.box.com/s/oom4bjnve9zmlpdcevip

最佳答案

您的返回类型有误。前缀和后缀运算符都不返回 void。 Prefix 应该返回一个iterator &,postfix 应该返回一个iterator 实例。

供引用:http://msdn.microsoft.com/en-US/library/f6s9k9ta%28v=VS.80%29.aspx

关于c++ - 即使后缀和赋值都重载,运算符重载也不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13253469/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com