簡體   English   中英

2d向量(向量下標超出范圍)

[英]2d vectors (vector subscript out of range)

我已經編寫了將字符串解析為稱為輸入的2d向量的代碼。 我想將第一個索引的字符串放入一個存儲帶有lhs和rhs的節點的向量中。 每個向量的第一個索引應以lhs為單位,每個其他字符應以rhs為單位。 我使用循環3次或更多次的代碼獲得了矢量下標。 我究竟做錯了什么?

struct finalNode
{
    string rhs;
    string lhs;
    bool isTerm;

};

void fillGramRules()
{
    for (int i = 0; i < input.size(); i++)
    {
        finalNode fNode;

        //attempts to copy first position 0 of every array to string lhs of     fnode, this crashes the program
        fNode.lhs = input[i][0].symbol;
        newNode.isTerm = input[i][0].isTerminal;
        for (int j = 1; j < input[i].size()-1; j++)
        {
            newNode.rhs.append(input[i][j].symbol);
            newNode.isTerm = input[i][j].isTerminal;
        }
        gramRules.push_back(fNode);
    }
}

如果input [i]為空,則嘗試訪問input [i] [0]將導致崩潰,因此您可能要首先檢查一下。

if(!input[i].empty()) {
    fNode.lhs = input[i][0].symbol;
    newNode.isTerm = input[i][0].isTerminal;
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM