相关疑难解决方法(0)

vector :: erase不能与反向迭代器一起使用吗?

以下代码将无法编译

some_vector.erase(some_vector.rbegin(), some_vector.rbegin()+1);
Run Code Online (Sandbox Code Playgroud)

这只是一个例子,我知道删除最后n个元素有更好的选择.GCC告诉我没有匹配的擦除功能.我做错了什么或擦除不适用于反向迭代器?但它可以正常使用前向迭代器

c++ stl

4
推荐指数
1
解决办法
342
查看次数

从末尾删除向量中的所有空元素

给定一个std::vector字符串,删除从末尾开始的所有空元素(等于空字符串或空格)的最佳方法是什么。当发现非空元素时,应停止删除元素。

我当前的方法(正在进行中)类似于:

while (Vec.size() > 0 && (Vec.back().size() == 0 || is_whitespace(Vec.back()))
{
    Vec.pop_back();
}
Run Code Online (Sandbox Code Playgroud)

whereis_whitespace返回一个 bool 值,说明字符串是否为空格

我怀疑我的方法会在每次迭代时调整向量的大小,这是次优的。也许通过某种算法可以一步完成。

输入:{ "A", "B", " ", "D", "E", " ", "", " " }

所需输出:{“A”,“B”,“”,“D”,“E”}

c++ string vector

3
推荐指数
1
解决办法
2677
查看次数

标签 统计

c++ ×2

stl ×1

string ×1

vector ×1