[英]converting matrix to std::vector
我有以下矩陣:
unsigned wins[8][3] = { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 }, { 0, 3, 6 }, { 1, 4, 7 }, { 2, 5, 8 }, { 0, 4, 8 }, { 2, 4, 6 } };
如何將其轉換為std :: vector?
您可以使用兩個迭代器構造函數來實例化帶有wins
數據副本的向量:
unsigned* start = &wins[0][0];
std::vector<unsigned> vwins(start, start + (8 * 3));
這依賴於指針算法,指針是迭代器的事實以及2D數組是連續塊的事實,本質上是具有靈巧索引的1D數組。
由於我不知道您是否想要2D向量,因此我將處理2D情況,因為juanchopanza處理了1D情況。 :)如果您使用的是C ++ 11,則可以執行以下操作:
#include <iostream>
#include <vector>
using namespace std;
int main()
{
vector<vector<int>> wins = { { 0, 1, 2 }, { 3, 4, 5 }, { 6, 7, 8 }, { 0, 3, 6 }, { 1, 4, 7 }, { 2, 5, 8 }, { 0, 4, 8 }, { 2, 4, 6 } };
for(vector<int> & row : wins) {
for(int &col : row) {
cout << col << " ";
}
cout << endl;
}
return 0;
}
本示例使用C ++ 11初始化程序列表創建類似的結構,也稱為wins。 我還編寫了一些代碼,展示了如何循環瀏覽以明智的方式將其打印出來。
希望這可以幫助! :)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.