【发布时间】:2011-05-05 15:54:41
【问题描述】:
我对这段代码有疑问:它总是崩溃,但是当我发表评论时:dataResults[i].clear();
知道原因吗?
std::vector<std::string> r_OCRtoRetrieve;
std::vector<std::string> DBentries;
//stuff..
int distance = 9999; //TODO change here
int minDistance = 9999;
for(int i=0; i< r_OCRtoRetrieve.size(); i++)
for(int j=0; j< DBentries.size(); j++)
{
distance = calcDistance( (const char *)r_OCRtoRetrieve[i].c_str(),(const char *) DBentries[j].c_str());
if (distance == minDistance)
dataResults[i].push_back(DBentries[j]);
else
if(distance < minDistance)
{
minDistance = distance;
dataResults[i].clear();
dataResults[i].push_back(DBentries[j]);
}
}
编辑:
发现错误..我必须初始化它..这是代码:
for(int i=0; i< r_OCRtoRetrieve.size(); i++)
{
dataResults.push_back(std::vector<std::string>());
for(int j=0; j< DBentries.size(); j++)
{
distance = calcDistance( (const char *)r_OCRtoRetrieve[i].c_str(),(const char *) DBentries[j].c_str());
if (distance == minDistance)
dataResults[i].push_back(DBentries[j]);
else
if(distance < minDistance)
{
minDistance = distance;
if(dataResults[i].size() > 0)
dataResults[i].clear();
dataResults[i].push_back(DBentries[j]);
}
}
}
【问题讨论】:
-
您能给我们异常消息吗?
-
你的变量
dataResults定义为什么? -
什么是dataResults?我没有看到声明。
-
为什么在对
calcDistance的调用中有多余的演员表? -
更重要的是
dataResults是什么,它在哪里声明,数据是如何插入到其他地方的,访问dataResults[i]时确定它有i元素吗?跨度>