运算符[]是否接受C++中整数以外的类型?
Dictionary为了学习,我正在尝试将Python重新创建为 C++。
我希望能够将下标运算符 [] 与 a keyType(这是字典中键的数据类型,可能是 int、string 等)一起使用,我尝试了这种方法(我正在使用链表):
// keyFind is the value to be found
void operator[](keyType keyFind) {
typeList* trav; // typeList is an alias for: linked_list<keyType, valType>
for (trav = head; trav != nullptr; trav = trav->next) {
if (trav->key == keyFind) {
cout << trav->val << endl;
break;
}
}
}
该void返回类型是为未来的返回类型的占位符。
我的问题是:我应该使用这种方法还是应该简单地使用普通函数,哪个被认为是最佳实践?
回答
运算符 [] 是否接受 C++ 中整数以外的类型?
运算符重载只是函数,它们可以像其他函数一样接受任何参数类型。所以,是的。
C++ 标准库已经提供std::unordered_map,std::map并且在大多数情况下类似于 Python 字典。