关于 C++ 中属性向量的查询
我是一个初学者,刚刚接触到 C++ 中向量的概念。我有几个问题
1. C++中有二维向量的概念吗?如果是,那么我如何声明对应于二维矩阵a[n][m]?这里,n和m是变量。
2.向量如何作为参数传递给函数?默认情况下它们是按引用传递还是按值传递?
3. 在 C++ 中向量相对于数组有什么性能优势吗?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
1 - 尺寸本身没有真正的概念。但您可以创建“嵌套”类型。例如:
这里,
intVec
可以与一维向量进行比较,doubleIntVec
可以与双维向量进行比较,等等。类型不必相同,您可以执行 std::vectorstd::vector; >例如,doubleIntVec,这就是为什么“维度”在这里不是正确的术语。
2 - 与任何其他类型一样,载体没有特定的处理方法。
3 - 是的,例如,如果您需要调整它们的大小,但您可以实现数组以实现类似的行为。除此之外,好处是标准化、内置内存管理、附加方法以及可以在向量(作为标准容器)上运行的各种 STL 算法。
1 - There's no real concept of dimensions per se. But you can create "nested" types. For example:
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 dostd::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).
C++ 中没有二维向量,要创建矩阵,可以使用向量的向量。
不过,计算库不会以这种方式实现它们。
要通过引用函数传递向量,请使用:
无效函数(向量和v);
省略 &将导致向量在函数调用期间被复制。
向量具有与 C 数组相同的性能,但更实用。
无需手动管理内存,并且向量大小始终可访问。
您还可以自动复制并保证值的连续性(可以通过 vector::data() 访问原始数据
There's no 2-D vectors in C++, to create a matrix, you can use vectors of vectors.
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()
C++中的向量只是一个序列容器。因此,可以使用它来保存二维数组。
std::vector>
vector in C++ is just a sequence container. So, it's possible using it to hold a 2D array.
std::vector <std::vector<int>>