Ébe*_*aac 2 c++ variables casting vector
我不确定如何投射从pop_back()函数中获得的值vector.以下是一个简单的代码来说明问题.
#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;
}
Run Code Online (Sandbox Code Playgroud)
这是我得到的错误.
pushback.cpp:18:9: error: assigning to 'int' from incompatible type 'void'
val = a.pop_back();
^ ~~~~~~~~~~~~
1 error generated.
Run Code Online (Sandbox Code Playgroud)
我也尝试过铸造; (int)a.pop_back(),但它引发了一个错误说明C-style cast from 'void' to 'int' is not allowed.
我是否知道是否有一种标准方法来存储pop_back()函数的值?
the*_*ang 10
它可能听起来像返回值一样流行.但它实际上没有.标准说vector::pop_back应该删除最后一个值,没有返回值.
你可以做:
auto val = a.back();
a.pop_back();
Run Code Online (Sandbox Code Playgroud)
如文档 std::vector::pop_back()中所述,不返回任何值,您只需要在此std::vector::back()之前调用:
val = a.back();
a.pop_back();
Run Code Online (Sandbox Code Playgroud)