簡體   English   中英

將矩陣轉換為std :: vector

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM