运算符[]是否接受C+中的int以外的类型+;? 我试图从Python中重新创建代码> C++,为了学习。< /P>

运算符[]是否接受C+中的int以外的类型+;? 我试图从Python中重新创建代码> C++,为了学习。< /P>,c++,oop,linked-list,C++,Oop,Linked List,我希望能够将下标运算符[]与键类型一起使用(这是字典中键的数据类型,可能是int、string等),我尝试了这种方法(我使用的是链表): //keyFind是要查找的值 无效运算符[](键类型键查找){ typeList*trav;//typeList是:linked\u list的别名 对于(trav=head;trav!=nullptr;trav=trav->next){ if(trav->key==keyFind){ 库特瓦尔 < P>操作符[]接受C++中除int以外的类型吗?< /p>

我希望能够将下标运算符[]与
键类型一起使用(这是字典中键的数据类型,可能是int、string等),我尝试了这种方法(我使用的是链表):

//keyFind是要查找的值
无效运算符[](键类型键查找){
typeList*trav;//typeList是:linked\u list的别名
对于(trav=head;trav!=nullptr;trav=trav->next){
if(trav->key==keyFind){
库特瓦尔
< P>操作符[]接受C++中除int以外的类型吗?< /p>
运算符重载只是函数,它们可以像其他函数一样接受任何参数类型


<> > C++标准库已经提供了 STD::unordeDeMAP>/COD>和 STD::MAP>代码>,类似于Python字典。

查看标准库是如何执行的:所以,是的,接受密钥类型作为参数是一个好主意。我会重申@ BoLoV的用法。我不确定它是否是A.“最佳实践”,但其他人肯定对此很熟悉。我认为“运算符重载只是函数”有点简化。例如,您不能使用接受多个参数的签名编写
运算符[]
的重载。
    // 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;
            }
        }
    }