C++中此处for()内代码 :的含义是什么?

set<string> generatePermutations(string str) {
    set<string> result;
    if (str == "") {
        result.insert("");
    }
    else {
        for (int i = 0; i < str.length(); i++) {
            char ch = str[i];
            string rest = str.substr(0, i) + str.substr(i + 1);
            for (string s : generatePermutations(rest)) {    
                result.insert(ch + s);
            }
        }
    }
        return result;
}

抱歉之前看错题目了,这个是c++11新增的,用于遍历(我猜是依次把)generatePermutations(rest)  的内容按下标放进string变量s,  自动探测下标是否越界

这个类似的可以参考:

vector<int> ints;

//pushback...

for (auto i:ints){...}

翻译成现代汉语:先初始化整形变量 i 为0,(第一个分号),然后是循环条件,i小于字符串长度(第二个区域),最后是i自增1,相当于i=i+1(你写成i+=1也无所谓).第一个区域只会运行一次,第二个区域是执行条件,当不满足这个条件(在你这里是字符串下标越界),就自动跳出循环,第三个区域是每次都要执行的语句,每循环一次就会i自增1

for()里面第一部分是定义一个for循环里的变量,第二部分是判断是否继续循环