【问题标题】:How to use for each loop in c++如何在c ++中使用每个循环
【发布时间】:2013-06-24 10:31:10
【问题描述】:
#include <cstdlib>
#include <iostream>
#include <string>

using namespace std;

int main() {
    string str("hello world!");
    for (auto &c : str)
        c = toupper(c);
    cout << str;
    return 0;
}

此 c++ 代码无法编译。 错误信息: main.cpp:21:错误:在“:”标记之前不允许函数定义 问题: c++ 中是否有 for each 循环(范围 for 循环?)? 上面的 for each 循环有什么问题?

提前致谢。

【问题讨论】:

标签: c++


【解决方案1】:

代码是有效的,可以在online compiler 上演示。

请参阅您的编译器文档以确保您已启用 C++11。该选项通常称为-std=c++11。您可能需要下载升级;检查 GCC(当前为 4.8)或 Clang(当前为 3.3)的包管理器。

【讨论】:

    【解决方案2】:

    在 C++11x 之前,for_eachalgorithm 标头中定义。 只需使用:

    for_each (vec.begin(), vec.end(), fn);
    

    其中fn 是元素将被传递到的函数,前两个参数是输入迭代器。

    另外,在包含 stringalgorithm 之后,您可以使用

    std::transform(str.begin(), str.end(),str.begin(), ::toupper);

    【讨论】:

    • std::for_each 仍然定义在 algorithm 标头中,即使在 C++11 中也是如此。 (C++11 引入语言核心的基于范围的 for 循环并没有取代 std::for_each 算法,尽管在用例中有一些重叠。)
    猜你喜欢
    • 2019-03-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-23
    • 1970-01-01
    相关资源
    最近更新 更多