gpt4 book ai didi

c++ - 无法理解此代码中使用的 for 循环

转载 作者:行者123 更新时间:2023-12-02 12:53:29 25 4
gpt4 key购买 nike

当我遇到这个用 C++ 编写的代码片段时,我正在尝试解决一个问题:

string s;
cin >> s;
vector<int> r;
for (string t: {"twone", "one", "two"}) {
for (size_t pos = 0; (pos = s.find(t, pos)) != string::npos;) {
s[pos + t.length() / 2] = '?';
r.push_back(pos + t.length() / 2);
}
}
cout << r.size() << endl;
for (auto rr: r)
cout << rr + 1 << " ";
cout << endl;

我是该语言的新手,无法理解第二个(嵌套)for 循环和第三个 for 循环中发生的情况。有人可以帮我理解吗?

最佳答案

第一个和第三个循环是 range-based for loops .

第一个循环迭代字符串容器。因此 t 依次取值 "twone""one""two"

第二个循环搜索字符串s中所有出现的t(每次搜索都从找到的前一个出现的位置pos开始) )。只要找到一个元素,它就会:

s[pos + t.length() / 2] = '?';
r.push_back(pos + t.length() / 2);

push_back() 存储在整数 vector 中找到的每个出现的中间位置。

第三个循环迭代这个存储位置 vector 并打印元素(位置计数从 0 开始,+1 移动打印位置,就好像计数从 1 开始一样)。

关于c++ - 无法理解此代码中使用的 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59809996/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com