繁体   English   中英

struct 不提供下标运算符

[英]Struct does not provide a subscript operator

我试图在我的 DFS 搜索类中遍历我的邻接列表,但它给了我这个错误:类型“AdjList”不提供下标运算符。 我觉得这可能是我为 DFS 保存 adjList 构造函数的方式,但我不确定。 我看到其他的解决办法看到它作为一个指针传递,所以我改变AdjList list在构造函数中AdjList* list ,但没有奏效。 这是我的代码:

主程序


    AdjList::AdjList(){}

    AdjList::AdjList(vector<Node> nodeVector){
        nodeContainer = nodeVector;
    }

    void AdjList::makeAdjList(){
        int temp;
        for(int i = 0; i < nodeContainer.size(); i++){
            connections = nodeContainer[i].getConnectionsVector();

            for(int x = 0; x < connections.size(); x++){
            innerList.push_back(nodeContainer[connections[x] - 1]);
            }
        
        adjList.push_back(innerList);
        innerList.clear();
        }  
    }

    //other AdjList functions

int main(){
    vector<Node> nodeContainer;
    nodeContainer = load();

    
    AdjList adjList(nodeContainer);
    adjList.makeAdjList();
   
    
    DFS search(nodeContainer, adjList);
    search.iterative(6,3);

}

DFS文件

DFS::DFS(vector<Node> nodeVec, AdjList list){
        nodeContainer = nodeVec;
        adjList = list;
   }

vector<Node> DFS::iterative(int src, int dest){
        vector<Node> vectorPath;
     
            
            list<Node>::iterator it;
            int i = 6;
            for(it = adjList[i].begin(); it != adjList[i].end(); it++){ //this is where the 
                                                                        //error is happening
                cout << it->getNodeID() << " ";
            } 
        return vectorPath;
    }

调整列表.h

class AdjList{
private:
public:
    list<Node> innerList;
    vector<list<Node> > adjList;
    vector<Node> nodeContainer;
    vector<int> connections;
    int temp;

    AdjList();
    AdjList(vector<Node> nodeVector);

    void makeAdjList();

    void displayAdjList();
};

当你说adjList[i] ,C++ 会在adjList的类型中寻找一个operator[] ,它是AdjList 由于这种类型没有这样的成员函数,您会收到错误消息,指出它丢失了。

供应一个

std::list<Node>& operator[](std::size_t i);
std::list<Node> const& operator[](std::size_t i) const;

并在两者中返回adjList[i]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM