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