我不確定如何投射pop_back()
函數vector
獲得的值。以下是說明問題的簡單代碼。如何在C++中存儲從矢量`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()
函數值的標準方式?
哦!謝謝你的澄清。我剛剛在不同的語言(Python,Java等)之間混淆瞭如何實現'pop'。它從來沒有想過在C++中這是一個用詞不當的地方。 –
@ÉbeIsaac有一個原因,例如,如果複製或移動ctor拋出異常該怎麼辦? – Slava