gpt4 book ai didi

c++ - 修剪字符串 vector

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:13:16 24 4
gpt4 key购买 nike

我有一个 std::vectorstd::strings 包含类似这样的数据:

[0] = ""
[1] = "Abc"
[2] = "Def"
[3] = ""
[4] = "Ghi"
[5] = ""
[6] = ""

如何获得包含从 1 到 4 的 4 个字符串的 vector ? (即我想从 vector 的开头和结尾修剪所有空白字符串):

[0] = "Abc"
[1] = "Def"
[2] = ""
[3] = "Ghi"

目前,我正在使用前向迭代器到达 "Abc" 并使用反向迭代器返回 "Ghi",然后使用这些迭代器构建一个新的 vector 。这种方法可行,但我想知道是否有更简单的方法来修剪这些元素。

附言我是 C++ 菜鸟。

编辑

另外,我应该提到 vector 可能完全由空白字符串组成,在这种情况下,0 大小的 vector 将是所需的结果。

最佳答案

这个怎么样,有一个谓词:

class StringNotEmpty
{
bool operator()(const std::string& s) { return !s.empty(); }
};

现在修剪:

vec.erase(std::find_if(vec.rbegin(), vec.rend(), StringNotEmpty()).base(), vec.end());
vec.erase(vec.begin(), std::find_if(vec.begin(), vec.end(), StringNotEmpty()));

.base() 调用中可能存在差错,但总体思路应该可行。

关于c++ - 修剪字符串 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4642339/

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