【发布时间】:2019-07-07 01:18:56
【问题描述】:
错误似乎与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) );
}
}
我试过上面的代码,但程序意外停止。
【问题讨论】:
-
顺便说一句,可以(并且应该)将代码从 O(n³) 简单地更改为 O(n²)。使用 O(n) 空间(覆盖
v或额外),甚至 O(n) 也是可能的。 -
@JeJo 我回滚了您的编辑,因为它改变了被询问的 OP 原始代码的语义。清理某人的格式是可以的,但不要更改某人代码的逻辑以使其工作方式不同,尤其是在问题中。
-
@RemyLebeau 认为,忽略(OP)
main()是显而易见的,并且不会改变他所要求的任何特别之处。抱歉,如果我的编辑具有误导性。感谢您的回复。