错误似乎与std:: accumulate()或迭代器有关,或者我正在访问无效的指针?
int m = 0;
std::vector<int> v{4,-3,0,-5};
for(std::vector<int>::iterator i = v.begin(); i != v.end(); i++)
{
for(std::vector<int>::iterator j = v.begin(); j != v.end(); j++)
{
m = max( m, std::accumulate(i, j, 0) );
}
}我试过上面的代码,但程序意外停止。
发布于 2019-07-06 17:46:34
问题是j可以小于i。这个版本可以工作
int m = 0;
std::vector<int> v{4,-3,0,-5};
for(std::vector<int>::iterator i = v.begin(); i!=v.end(); i++)
{
for(std::vector<int>::iterator j = i; j!=v.end(); j++)
// ^^^^^^
{
m = max( m, std::accumulate(i, j, 0) );
}
}https://stackoverflow.com/questions/56912901
复制相似问题