查询C ++中的属性向量

时间:2011-10-02 08:40:49

标签: c++ function vector

我是初学者,只是在C ++中遇到了矢量的概念。我有几个问题 1. C ++中是否存在二维向量的概念?如果是,那么我如何声明对应于二维矩阵a [n] [m]?这里,n和m是变量 2.向量如何作为参数传递给函数?默认情况下,它们通过引用或值传递?
3. C ++中的数组是否有任何性能优势?

3 个答案:

答案 0 :(得分:1)

1 - 尺寸本身没有真正的概念。但是您可以创建“嵌套”类型。例如:

std::vector <int> intVec;
std::vector < std::vector <int> > doubleIntVec;

此处,intVec可以与单维向量进行比较,doubleIntVec可以与双维度进行比较,依此类推。类型不必相同,例如,您可以std::vector < std::vector <char> > doubleIntVec,这就是为什么“维度”不是正确的术语。

2 - 与任何其他类型一样,没有特定的载体处理方法。

3 - 是的,例如,如果您需要调整它们的大小,但是您可以实现数组的行为类似。除此之外,好处是标准化,内置的内存管理,附加方法以及可以在向量上运行的各种STL算法(作为标准容器)。

答案 1 :(得分:1)

C ++中没有二维矢量,要创建矩阵,你可以使用矢量矢量。

using namespace std;
int m, n;
// ...
vector<vector<int> > v(n);
for (int y = 0; y < n; y++)
    v[n].resize(m);
// ...
但是,

计算库不会以这种方式实现它们。

要通过引用传递向量,请使用:     void function(vector&amp; v); 省略&amp;将导致在函数调用期间复制向量。

向量具有与C数组相同的性能,但使用起来更实用。 无需手动管理内存,始终可以访问矢量大小。 您还可以自动复制并保证值的连续性(原始数据可以通过vector :: data()访问

答案 2 :(得分:0)

C ++中的vector只是一个序列容器。因此,可以使用它来保存2D数组。

  1. 使用std::vector <std::vector<int>>
  2. 这取决于目的。
  3. 不是性能,但与数组不同,std :: vector是可增长的。