0

我是 C++ 编程的新手,我试图更好地理解数组和向量之间的区别。在我的程序中,我有一个类 Graph,其中一些数组作为私有成员。该类有一个方法使用这些数组来实现 Prim 的最小生成树算法。我从此页面中获取了算法并为我的程序更改了它。

我现在被要求使用向量而不是数组,所以我想知道:

我真的需要改变多少东西?声明和构造函数,好的。但是周期,初始化。我必须改变一切吗?该程序仍然有效。使用vector的功能有那么重要吗?

4

3 回答 3

1

如果您想坚持当前的实现,但您想尝试使用向量,您可以通过以下方式使用数组数据填充向量:

vec.assign(arr, arr + arr_size);

于 2013-11-11T18:58:15.390 回答
0

从数组切换到vector. 您可以使用数组的大小初始化vector并用0元素填充它:

vector<YourType> v(size_of_array, YourType(0));

然后v在使用数组时或多或少地使用,即:

v[x] = YourType(y);
// ....
f(v[z]);

ETC

于 2013-11-11T15:06:51.107 回答
0

我查看了上面链接中的代码,发现了很多可以使用 STL 向量而不是定义的数组的地方。

例如,下面是如何用向量替换几个数组,然后初始化它们的值的示例:

#include <iostream>
#include <limits>
#include <vector>

// Number of vertices in the graph
static const int V = 5;

int main()
{
    // Rather than use:
    // int key[V];
    // bool mstSet[V];

    // You could setup STL vector containers:
    std::vector<int> key;
    std::vector<bool> mstSet;

    // Next, initialize:
    for (size_t i = 0; i < V; i++) {
        key.push_back(INT_MAX);
        mstSet.push_back(false);
        std::cout << key[i] << "; " << mstSet[i] << std::endl;
    }

    return 0;
}
于 2013-11-11T15:21:35.880 回答