矢量超出特定机器的范围
Vector out of range on a specific machine?
我的一个程序中有一个函数,它只在特定的机器上引发错误。它在我的Windows盒子上运行良好,但当我在Linux机器上测试它时,它会抛出一个向量超出范围的错误:
----------------------------------------------
FINDING LONGEST WORD CHAIN
----------------------------------------------
The longest chain(s) are:
terminate called after throwing an instance of 'std::out_of_range'
what(): vector::_M_range_check
Abort
这就是我的日常生活:
void findLongestChain(vector<FlexArray<StringWrap>* >& chains) {
int max;
int maxIndex;
vector<int> v;
for(std::vector<int>::size_type i = 0; i != chains.size(); i++) { // iterate through vector
int chainSize = getChainSize(chains, i);
if(chainSize == max) { // just in case we have a tie
v.push_back(i);
}
else if(chainSize > max) { // we have found a larger word chain breaking any previous ties
max = chainSize;
maxIndex = i;
v.clear();
v.push_back(i);
}
}
cout << "----------------------------------------------" << endl;
cout << " FINDING LONGEST WORD CHAIN " << endl;
cout << "----------------------------------------------" << endl;
cout << "The longest chain(s) are: " << endl;
for(std::vector<int>::size_type i = 0; i < v.size(); i++) {
cout << " Chain #" << v[i] << ": " << getWordChain( chains, v[i] ) << endl;
}
cout << endl;
cout << "Each chain(s) contain " << getChainSize(chains, maxIndex) << " total words.";
}
无论如何,我以前从未见过这种情况。我想知道是否有人对不同机器上的程序错误有一些一般的提示/建议/经验,以及如何找到问题的解决方案。
以下几行可能是罪魁祸首。
int max;
int maxIndex;
变量未初始化。试着将它们初始化为合理的东西,看看事情进展如何。
相关文章:
- 为什么在全局范围内使用"extern int a"似乎不行?
- 尝试通过多个向量访问变量时,向量下标超出范围
- 处理小于cpu数据总线的数据类型.(c++转换为机器代码)
- 错误:未在此范围内声明'reverse'
- 正在将指针转换为范围
- 使用std::transform将一个范围的元素添加到另一个范围中
- 在基于范围的for循环中使用结构化绑定声明
- 如何计算数据类型的范围,例如int
- 为什么 const std::p air<K,V>& 在 std::map 上基于范围的 for 循环不起作用?
- 在C++中查找范围的长度
- 如何在本地机器上运行c++和javascript客户端代码(hackerbank风格)
- 如何设置一个范围来提取我想要获得的信息
- 并行用于C++17中数组索引范围内的循环
- 为左值和右值的包装器实现C++范围
- 在两台机器之间进行时间戳的最佳c++chrono函数是什么
- 求出有多少个数字是完美平方,而sqrt()是L,R范围内的素数
- 关于:C++中异常对象的范围:为什么我没有得到副本?
- 超出范围时使用对象
- 如何在我的机器上用c++在运行时检测临时端口范围?
- 矢量超出特定机器的范围