制作2d矢量和列表的不同方法

时间:2017-12-16 05:06:33

标签: c++ list vector stl

所以我有这个片段

vector<int> *adj;
adj = new vector<int>[n];

这是另一种常见的方式

vector<vector<int> adj(n);

以前使用指针的方式可以用来制作2d数组吗?它会像后者一样工作吗?

如果以前的方式使用,如果它可以用于制作2d向量。

我可以使用以前的方式制作2d列表吗?

对于那些想知道以前的方法的人来说是错误的制作名单的方式,这对极客来说是极客 http://www.geeksforgeeks.org/topological-sorting/

1 个答案:

答案 0 :(得分:0)

有很多方法可以创建多维向量,但我使用的方法是使用struct,

以下是2X2表

的示例
#include<iostream>
#include<vector>

struct table
{
    std::vector<int> column;
};

int main()
{
    std::vector<table> myvec;
    // values of the column for row1
    table t1;
    t1.column = {1,2};
    // Push the first row
    myvec.push_back(t1);
    // values of the column for row2
    table t2;
    t2.column = { 3, 4};
    // push the second row
    myvec.push_back(t2);
    // now let us see whether we've got a 2x2 table
    for(auto row : myvec)
    {
        auto values = row.column; 
        for(auto value : values) std::cout<< value << " ";
        std::cout<<"\n";
    }
    // Now we will try to get a particular value from the column index of a particular row
    table row = myvec[1]; // 2nd row
    std::cout<<"The value present at 2nd row and 1st column is: "<<row.column[0] <<"\n";
}

给了我,

1 2 
3 4 
The value present at 2nd row and 1st column is: 3

您可以轻松将其更改为不同的尺寸。

注意:如果有人纠错我的错误,我已将这个答案发给我。谢谢