1
我遇到了一些向量返回值爲空的問題。以下是基本設置:向量返回空C++
//Foo.h
struct Foo{
int n;
double vals[2];
};
//MyClass.h
class MyClass{
private:
std::vector<Foo> classVector;
public:
std::vector<Foo> getPair(int i1, int i2);
};
//MyClass.cpp
std::vector<Foo> MyClass::getPair(int i1, int i2)
{
std::vector<Foo> toReturn(2);
toReturn[0] = classVector[i1 - 1];
toReturn[1] = classVector[i2 - 1];
return toReturn;
}
classVector是一個已經初始化並且包含數據的向量。我基本上只是試圖從該向量中獲取兩個值,並使用此函數返回它們。但是,當我調用返回值時,在調試模式下返回時,大小將重置爲零,並且已複製過的元素(我在返回調用之前檢查過)不再位於向量中。
我有一種感覺,它必須做一個淺拷貝被傳回來。我嘗試爲Foo創建自己的拷貝構造函數,但是當它沒有解決問題時我刪除了它。
'返回的std ::矢量(classVector.begin(),classVector.begin()+ 2);' –
Borgleader
2014-12-03 21:39:34
@Borgleader坦率地說,'返回make_pair (...' – 2014-12-03 21:40:02
我會嘗試make_pair。另一個建議不起作用,因爲元素不一定是按順序排列的 – ewpcasey 2014-12-03 21:41:27