有什麼辦法可以製作多維數組的向量?即時嘗試使用2維整數數組作爲其元素,但vector<int[4][4]>
無法正常工作。做這件事的正確方法是什麼?向量的多維數組
向量的多維數組
回答
這不能用內建的多維數組來完成。您可以使用Boost multi-dimensional arrays。
這個link有一個很好的解釋爲什麼它不可行。基本上,int [4] [4]類型是不可賦值的。
根本不能擁有數組的向量。標準容器元素類型必須爲可複製,且數組不可複製。
但是,你可以有載體的載體,如:
std::vector<std::vector<int> >
玩這個。
或者堅持使用數組:
std::vector<boost::array<int, N> >
或者,如果你有C++ 0X:
std::vector<std::array<int, N> >
{boost,std}::array
是圍繞自動存儲持續時間陣列的對象包裝,所以它的非常接近你最初的嘗試。
真的提升或C++ 0x來實現int [4] [4]?一個很大的工具來實現一些基本的東西... – vrince 2011-05-28 01:48:53
@vrince:寫你自己的'struct T {int ar [4] [4]; };'如果它困擾你。而Boost或C++ 0x中的相關頭文件是「大工具」,是一個完整的神話;他們其實很輕。 (它本身有點令人遺憾,原生數組並不是第一個可以複製的......這就怪C) – 2011-05-28 01:53:17
「大工具」並不是你的正確表達方式,我試圖用法語表達文學說「用錘子殺死蒼蠅」......顯然我失敗了:)。我只是害怕needhelps會錯過使用這些庫的'copyable'概念。 – vrince 2011-05-28 02:56:49
由於@vrince在評論所說,你可以有一個類/結構封裝int[4][4]
:
struct My2DArray {
int a[4][4];
};
而對於上述聲明vector
:
vector<My2DArray> obj;
爲了方便,你可以定義各種operator
小號和public
方法(比如複製構造函數,賦值運算符等)來處理它。
- 1. numpy中多維數組的向量和
- 2. 多維向量?
- 3. 多維向量
- 4. 指向多維數組
- 5. cpp多維向量
- 6. KNN多維向量
- 7. C++多維向量
- 8. 多維數組矢量
- 9. Scheme中的多維向量?
- 10. C++中的多維向量
- 11. 多維的std ::向量(C++)
- 12. 指向類中的多維數組
- 13. 向多維數組縮進的列表
- 14. 在多維的numpy數組中迭代向量
- 15. C++使用類輸出從多維向量的字符數組
- 16. 如何創建不同類型的多維向量/數組?
- 17. 跨多維數組的向量化NumPy空間
- 18. 分配子向量多維數組在numpy的
- 19. 從向量保存到二維數組
- 20. 用於多維數組的常量
- 21. 多維向量指針
- 22. 使用多維向量
- 23. 多維向量字符串
- 24. C++複製多維向量
- 25. 打印多維向量
- 26. 多維向量初始化
- 27. 動態多維向量
- 28. 如何指向多維數組值?
- 29. 向多維數組添加新索引
- 30. 向多維數組添加元素
你不能做一個包含'int [4] [4]'的類嗎?然後,你的類的一個'std :: vector' ... – vrince 2011-05-28 01:04:15
如果你真正想要的是一個矩陣向量,或者一個三維向量,我可以推薦Armadillo:http://arma.sf.net – drizzd 2011-05-28 10:08:39