以下代码将无法编译
some_vector.erase(some_vector.rbegin(), some_vector.rbegin()+1);
Run Code Online (Sandbox Code Playgroud)
这只是一个例子,我知道删除最后n个元素有更好的选择.GCC告诉我没有匹配的擦除功能.我做错了什么或擦除不适用于反向迭代器?但它可以正常使用前向迭代器
给定一个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”}