【发布时间】:2015-04-12 03:46:57
【问题描述】:
我编写了以下代码来检查向量的元素是否相等。但是,由于某种原因这是错误的,我无法确定原因。我确实认为“控件可能会到达非无效函数的结尾”。这没有意义,因为我看不到会发生这种情况。
任何帮助将不胜感激。
另外,这是在 xCode 中,更具体地说,程序是用 C++ 编写的。
bool equalElements(vector<string> fileExtensionsArray){
for (int i=0; i<fileExtensionsArray.size(); i++){
int j=i+1;
if(fileExtensionsArray.at(i) == fileExtensionsArray.at(j)){
return false;
}
else{
return true;
}
}
}
【问题讨论】:
-
如果
fileExtensionsArray为空,则循环体永远不会运行,因此不会到达return语句。 -
那么,我需要在标题中定义它的大小吗?或者,一个更好的问题是:我将如何解决这个问题? @IgorTandetnik
-
您将决定
equalElements在使用空向量调用时应该返回什么,并相应地实现它。此外,您还应该决定如何处理单元素向量;目前,您访问的索引越界。此外,正如所写,您的功能没有多大意义。你有一个循环——但你总是在第一次迭代时返回。您只会将元素 0 与元素 1 进行比较,并仅根据该比较返回。没有查看其他元素。 -
您的函数复制整个向量。为什么不通过 const 引用传递?如果向量不为空,则函数将在 for 循环仅迭代一次后返回。
标签: c++