带有向量成员c ++的结构

时间:2017-06-11 04:35:10

标签: c++ vector struct

我目前正在处理一个简单的问题,但是我遇到了从结构中的向量中获取元素的问题(我不习惯使用struct)。我知道在下面的代码片段中调用了错误/异常。我只是不明白/看看会导致调用此错误/异常的原因。错误发生在if (data[i].B[x] == str2))。我知道str2将始终有一个有效的字符串。因此,检查向量中的位置0应该是一个有效的调用,但相反,我得到"向量下标超出范围"。我不确定它是否与结构如何工作有关(我不明白)或者我是不是看不到明显的东西。我只需要向正确的方向努力,帮助我解决这个问题。任何提示都将不胜感激!

struct Things
{
    std::string A;
    std::vector <std::string> B;
};

    void fun(std::vector<Things> &data, std::string str2, std::string str1)
    { 
        bool dontAdd = false;
        for (int i = 0; i < data.size(); ++i)
        {
            if (data[i].A== str1)
            {
                if (data[i].B.size() == 0)
                {
                    data[i].B.push_back(str2);
                    dontAdd = true;
                }
                else
                {
                    for (int x = 0; x < data[i].B.size(); ++x)
                    {
                        std::cout << data[i].A;
                        std::cout << "The";
                        if (data[i].B[x] == str2)
                        {
                            dontAdd = true;
                        }
                    }
                }
            }
       }
   }

std::string str2;
int countLoops = 0;
std::string str1;
std::vector<Things> data;
while (std::getline(dataFile, str2))
{
    if (countLoops == 0)
    {
        str1= str2;
        Afun(data, str2);
    }
    else if (countLoops == 1)
    {
        fun(data, str2, str1);
    }
    ++countLoops;

    if (str2.empty())
    {
        countLoops = 0;
    }
}

0 个答案:

没有答案