在C++中,我们可以使用std::remove_if
函数结合lambda表达式来按长度从std::vector<string>
中擦除元素。std::remove_if
函数会将满足特定条件的元素移到容器的末尾,并返回指向新的末尾位置的迭代器。然后,我们可以使用std::vector
的erase
函数来擦除从新的末尾位置到容器的末尾的所有元素。
下面是示例代码:
#include <iostream>
#include <vector>
#include <algorithm>
int main() {
std::vector<std::string> vec = { "apple", "banana", "orange", "kiwi" };
// 按长度擦除元素
vec.erase(std::remove_if(vec.begin(), vec.end(), [](const std::string& str) {
return str.length() > 5;
}), vec.end());
// 输出剩余的元素
for (const auto& str : vec) {
std::cout << str << std::endl;
}
return 0;
}
输出结果为:
apple
kiwi
在这个示例中,lambda表达式[](const std::string& str) { return str.length() > 5; }
用于判断字符串的长度是否大于5。std::remove_if
函数将满足条件的元素移到容器的末尾,然后返回新的末尾位置的迭代器。最后,我们使用vec.erase
函数擦除从新的末尾位置到容器的末尾的所有元素,即长度大于5的元素被擦除。
腾讯云提供了多种产品来支持云计算应用,例如:
请注意,本答案中未提及亚马逊AWS、Azure、阿里云、华为云、天翼云、GoDaddy、Namecheap、Google等流行的云计算品牌商,如需了解相关品牌商的产品,建议查阅官方文档或网站。
领取专属 10元无门槛券
手把手带您无忧上云