如何在 C 中存储从向量 \`pop_back()\` 获得的值?

新手上路,请多包涵

我不确定如何转换从 --- 的 vector pop_back() 函数获得的值。下面是一个简单的代码来说明问题。

 #include<vector>
#include<iostream>

using namespace std;

int main()
{
  vector<int> a,b;
  int val;

  a.push_back(1);
  a.push_back(2);
  a.push_back(3);
  a.push_back(4);

  for(int i=0; i<4; i++)
  {
    val = a.pop_back();
    b.push_back(val);
  }

  vector<int>::iterator v = b.begin();
  while( v != b.end())
  {
    cout << *v << " ";
    v++;
  }
  return 0;
}

这是我得到的错误。

 pushback.cpp:18:9: error: assigning to 'int' from incompatible type 'void'
    val = a.pop_back();
        ^ ~~~~~~~~~~~~
1 error generated.

我也尝试过铸造; (int)a.pop_back() ,但它会引发错误说明 C-style cast from 'void' to 'int' is not allowed

我可以知道是否有标准方法来存储 pop_back() 函数的值?

原文由 Ébe Isaac 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 616
1 个回答

它可能听起来像返回值一样流行。但实际上并没有。标准说 vector::pop_back 应该删除最后一个值,没有返回值。

你可以做:

 auto val = a.back();
a.pop_back();

原文由 themagicalyang 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题