C ++中的无限[关闭]
Posted
技术标签:
【中文标题】C ++中的无限[关闭]【英文标题】:Infinite for in C++ [closed] 【发布时间】:2020-02-28 11:16:11 【问题描述】:我想一遍又一遍地循环std::vector
,直到我退出循环。这是最好的方法吗?
int main()
std::string str;
std::ifstream infile;
std::vector<int> vec;
std::set<int> sums;
int sum = 0;
sums.insert(sum);
infile.open("Text.txt");
while (!infile.eof())
getline(infile, str);
vec.push_back(std::stoi(str));
infile.close();
while (true)
for (int i : vec)
sum += i;
if (sums.count(sum))
std::cout << sum;
return 0;
sums.insert(sum);
【问题讨论】:
代码没有按照你描述的那样做,因为你遗漏了重要部分(没有break
),因此很难说什么是“最好的”
请提供minimal reproducible example
您显示的代码确实会永远重复内部部分,它会在向量上循环(假设您没有显示一些东西)。现在您需要定义“最佳”。考虑看一下标签***.com/tags/optimization/info,它提供了一个不错的选择,可以作为您定义的基础。我最喜欢的是“老师的幸福”。
你应该异步执行,因为我相信这将在 UI 线程上运行
你有没有在循环中对vec
做任何事情,如果有,是什么?
【参考方案1】:
您可以使用算法库并执行以下操作:
std::vector<int> vec;
// initialize vec here
while (std::none_of(vec.begin(), vec.end(), [](int i)
// return true here to break
return false;
));
【讨论】:
聪明。也许好,也许坏,但很聪明。以上是关于C ++中的无限[关闭]的主要内容,如果未能解决你的问题,请参考以下文章