gpt4 book ai didi

c++ - 如何使用 `copy_if`过滤索引的 `str`特定倍数

转载 作者:行者123 更新时间:2023-11-28 05:28:11 24 4
gpt4 key购买 nike

如何使用copy_if过滤str特定倍数的索引。

例如str 是“1000020000300004000050000”,我希望 newStr 是“12345”。

根据15*025*135*2


源代码:

std::string str("1000020000300004000050000");
std::string newStr;

std::copy_if(str.begin(), str.end(),
std::back_inserter(newStr),
[] (char c) {
// Some specific rule I want to return.
return ...;
}
);

理想的代码:

std::copy_if(str.begin(), str.end(),
std::back_inserter(newStr),
[] (char c) {
// I can get the index of iteration.
return (index % 5 == 0);
}
);

最佳答案

您可以传递字符串的开始和当前迭代器作为 lambda 函数的捕获并相应地使用它们(lambda 必须是可变的):

std::string str("1000020000300004000050000");
std::string newStr;

std::copy_if(str.begin(), str.end(),
std::back_inserter(newStr),
[it = str.begin(), beg = str.begin()] (auto c) mutable {
// I can get the index of iteration.
return (std::distance(it++, beg) % 5 == 0);
}

DEMO

关于c++ - 如何使用 `copy_if`过滤索引的 `str`特定倍数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40096949/

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