关于 C++ 中属性向量的查询

发布于 2024-12-07 18:38:43 字数 177 浏览 0 评论 0 原文

我是一个初学者,刚刚接触到 C++ 中向量的概念。我有几个问题
1. C++中有二维向量的概念吗?如果是,那么我如何声明对应于二维矩阵a[n][m]?这里,n和m是变量。
2.向量如何作为参数传递给函数?默认情况下它们是按引用传递还是按值传递?
3. 在 C++ 中向量相对于数组有什么性能优势吗?

I am kind of a beginner and just came across the concept of vectors in C++. I have a few questions about it

1. Is there a concept of 2-D vectors in C++? if yes, then how do i declare corresponding to a 2-D Matrix a[n][m]? Here, n and m are variables.
2. How are vectors passed as arguments to functions? By default are they passed by reference or by value?
3. Are there any performance benifits of vectors over arrays in C++?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

北陌 2024-12-14 18:38:43

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

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

这里,intVec 可以与一维向量进行比较,doubleIntVec 可以与双维向量进行比较,等等。类型不必相同,您可以执行 std::vector std::vector ; >例如,doubleIntVec,这就是为什么“维度”在这里不是正确的术语。

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

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

1 - There's no real concept of dimensions per se. But you can create "nested" types. For example:

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

Here, intVec can be compared to single-dimension vector, doubleIntVec to double dimension, and so on. The types don't have to be the same, you can do std::vector < std::vector <char> > doubleIntVec for example, which is why "dimension" is not the right term here.

2 - Like any other type, there's no specific treatment of vectors.

3 - Yes, for example if you need resizing them, but you can implement arrays to behave similarly. Other than that the benefit is the standardization, the memory management that comes built in, the additional methods, and the various STL algorithms that can be run on vectors (being it a standard container).

小糖芽 2024-12-14 18:38:43

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

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

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

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

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

There's no 2-D vectors in C++, to create a matrix, you can use vectors of vectors.

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

Computing libraries won't implement them this way, though.

To pass a vector by reference to a function, use:
void function(vector & v);
Omitting the & will result in the vector being copied during the function call.

Vectors have the same performance as C arrays, but are much more practical to use.
No need to manually manage the memory, and the vector size is always accessible.
You also have automatic copy and guarantees on contiguity of values (raw data can be accessed by vector::data()

怼怹恏 2024-12-14 18:38:43

C++中的向量只是一个序列容器。因此,可以使用它来保存二维数组。

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

vector in C++ is just a sequence container. So, it's possible using it to hold a 2D array.

  1. Using std::vector <std::vector<int>>
  2. It depends on the purpose.
  3. Not perfomance wise, but unlike array, std::vector is growable.
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文