簡體   English   中英

如何使用初始化列表 c++ 將元素放入嵌套向量中

[英]How do I get elements into a nested vector with an initializer list c++

我有一個矩陣 class ,其中包含一個向量內的向量作為其中的數據。 我希望能夠通過初始化列表插入元素。

這方面的一個例子如下:

#include <vector>
int main(void) {
    std::vector<std::vector<int>> v = {
        { 1, 2, 3, 4, 5 },
        { 6, 7, 8, 9, 10 }
    };
}

還應該注意的是,我在矩陣 class 中使用的向量是我編寫的自定義向量 class。 我找到了一種使用初始化列表向向量添加元素的方法,但我不知道如何對嵌套初始化列表執行相同操作,因為初始化列表不提供下標。

我知道外部初始化列表的大小(在上面的示例中是兩個),但我不知道如何獲取第二個初始化列表的大小。

到目前為止,這是我的代碼片段。

矩陣.h

template<class type>
class Matrix {
    private:
        Vector<Vector<type>> data;

    public:
        Matrix() {}
        Matrix(std::initializer_list<std::initializer_list<type>> init_list) {
            /* Get the data */
        }
        
}

此外,std::vector class 如何接收可能無限數量的初始化列表並將它們排序?

我希望能夠通過初始化列表插入元素。 ...我知道外部初始化列表的大小(在上面的示例中是兩個),但我不知道如何獲取第二個初始化列表的大小。

也許我誤解了你,但下面的代碼片段應該讓你開始。 根據 clang++ 的說法,它打印外部和內部初始化列表的大小以及元素,並在 C++11 中編譯和運行良好。

// ...
    Matrix(const std::initializer_list<const std::initializer_list<type>> & init_list) {
        cout << "vector of " << init_list.size() << " vectors" << endl;
        for (const auto & inner_list : init_list) {
           cout << inner_list.size() << " elements: " << endl;
           for (const auto & m : inner_list) {
              cout << m << ",";
           }
           cout << endl;
        }
    }

// ...

Matrix<int> M { { 1, 2 }, { -1, 2 } };

此外,std::vector class 如何接收可能無限數量的初始化列表並將它們排序?

我不確定我明白你在這里的意思。 如果我理解了這個問題,那么我認為上面的片段可以回答它。 如果我不這樣做,請在評論中詳細說明,我可以嘗試解決它。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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