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 ++中的无限[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C Linux 编程 - 管道使子进程退出

为啥内存管理很重要? [关闭]

断言与 C/C++ 中的调试有啥关系? [关闭]

C/C++ 中的四元数库 [关闭]

在 c\c++ 中的线程和并发中推荐一本好的编程书籍 [关闭]

将 c/c++ 宏转换为 c# 中的等效代码 [关闭]