我有以下2D矢量/矩陣X
並如下一個矢量Y
:調換一個2Dvector /矩陣
std::vector<double> Y;
unsigned int ctr=2;
std::vector<std::vector<double> >X(ctr,Y);
我現在想創建X的轉置,即。 Xtrans,所以我宣佈它下面
std::vector<std::vector<double> >Xtrans(Y,ctr);
,但它給了我下面的編譯錯誤:
test.cpp:128:58: error: no matching function for call to ‘std::vector<std::vector<double> >::vector(std::vector<double>&, unsigned int&)’
/usr/include/c++/4.5/bits/stl_vector.h:241:7: note: candidates are: std::vector<_Tp, _Alloc>::vector(const std::vector<_Tp, _Alloc>&) [with _Tp = std::vector<double>, _Alloc = std::allocator<std::vector<double> >, std::vector<_Tp, _Alloc> = std::vector<std::vector<double> >]
/usr/include/c++/4.5/bits/stl_vector.h:227:7: note: std::vector<_Tp, _Alloc>::vector(std::vector::size_type, const value_type&, const allocator_type&) [with _Tp = std::vector<double>, _Alloc = std::allocator<std::vector<double> >, std::vector::size_type = unsigned int, value_type = std::vector<double>, allocator_type = std::allocator<std::vector<double> >]
/usr/include/c++/4.5/bits/stl_vector.h:215:7: note: std::vector<_Tp, _Alloc>::vector(const allocator_type&) [with _Tp = std::vector<double>, _Alloc = std::allocator<std::vector<double> >, allocator_type = std::allocator<std::vector<double> >]
/usr/include/c++/4.5/bits/stl_vector.h:207:7: note: std::vector<_Tp, _Alloc>::vector() [with _Tp = std::vector<double>, _Alloc = std::allocator<std::vector<double> >]
如何去正確地宣佈Xtrans?
感謝您的解釋。爲了構建'XTrans',我首先聲明它是一個2D矢量,並且不傳遞任何參數。由於我想轉置'X',我應該在X上編寫一個迭代器並將值插入到XTrans中。 – user1155299
是的,也許如你所建議的那樣從構造'XTrans'開始 - 將它聲明爲一個空的二維矢量 - 即一個大小爲'ctr'的'std :: vector> - 就像你一樣爲'X'。然後遍歷'X'。但請記住它是二維的,所以你有一個外迭代器,它將遍歷'ctr'成員 - 但是你的成員是std :: vector ,(它們當前是空的 - 你只是聲明瞭'ctr'空'std ::矢量's)所以你將有一個內部迭代器爲你的每個'ctr'' std :: vector 's。 –
BeeBand
爲了填充'XTrans',我在迭代'X'之前忘了補充一點,您需要先用某種東西填充'X'(或者可能不是......)如果您使用迭代器,算法會運行, 't做任何事情:-)) – BeeBand