gpt4 book ai didi

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

转载 作者:太空狗 更新时间:2023-10-29 23:49:49 27 4
gpt4 key购买 nike

我正在尝试使用带 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/

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