我是 C++ 编程的新手,我试图更好地理解数组和向量之间的区别。在我的程序中,我有一个类 Graph,其中一些数组作为私有成员。该类有一个方法使用这些数组来实现 Prim 的最小生成树算法。我从此页面中获取了算法并为我的程序更改了它。
我现在被要求使用向量而不是数组,所以我想知道:
我真的需要改变多少东西?声明和构造函数,好的。但是周期,初始化。我必须改变一切吗?该程序仍然有效。使用vector的功能有那么重要吗?
如果您想坚持当前的实现,但您想尝试使用向量,您可以通过以下方式使用数组数据填充向量:
vec.assign(arr, arr + arr_size);
从数组切换到vector
. 您可以使用数组的大小初始化vector
并用0
元素填充它:
vector<YourType> v(size_of_array, YourType(0));
然后v
在使用数组时或多或少地使用,即:
v[x] = YourType(y);
// ....
f(v[z]);
ETC
我查看了上面链接中的代码,发现了很多可以使用 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;
}