c++ - 如何从 C++ Vector 中删除尾随 0

标签 c++ vector

我正在尝试使用带 pop_back 的 while 循环从 C++ vector 中删除尾随零。如果 vector 的最后一个元素是 0,它应该弹出最后一个元素,直到它不再是 0。

很难理解这些错误是什么意思,如果有更聪明的人能帮助我破译这些错误,我将不胜感激!

void Integer::unzero() {

  while ((*this).bits_vector[((*this).bits_vector.size)] == 0) {
    (*this).bits_vector.pop_back;
  }
} 

错误:

error C2679: binary '[': no operator found which takes a right-hand operand of type 'overloaded-function' (or there is no acceptable conversion)

error C3867: 'std::vector<bool,std::allocator<_Ty>>::pop_back': non-standard syntax; use '&' to create a pointer to member

最佳答案

使用 std::find_ifstd::vector::erase :

auto rit = std::find_if(bits_vector.rbegin(), bits_vector.rend(), 
                        [](int v) { return v != 0; });
bits_vector.erase(rit.base(), end(bits_vector));

顺便说一句,您忘记了括号:bits_vector.size()bits_vector.pop_back()

关于c++ - 如何从 C++ Vector 中删除尾随 0,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36526603/

相关文章:

c++ - 在特定时间间隔读写日志c++

c++ - 如何创建模板类型迭代器的 STL 对象?

c++ - 删除除某些位置以外的特定位置的元素

c++ - 具有显式调整大小的 vector

c++ - 在类和构造函数中使用 vector 时出现段错误

c++ - Intel Xeon X5550 上的 Linux 下 __rdtscp 校准不稳定

c++ - 在 Qt 中将文件移动到垃圾箱/回收站

c++ - 模板化 namespace 和 typedef 是非法的——解决方法?

c++ - 如何从函数返回 vector 对象?

vector - 如何将两个 Rust 向量交织成一个新向量?