我目前正在处理一个简单的问题,但是我遇到了从结构中的向量中获取元素的问题(我不习惯使用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;
}
}