【发布时间】:2021-12-29 14:18:06
【问题描述】:
我只是想知道,如果我将向量设置为函数的原型,我该如何定义它? 我知道我可以选择使用动态内存分配,但我想知道是否可以只使用:
void Function(double vector[]) { }
在代码的主要部分中,为其分配一些条目?
这是一种可接受的方法吗?
【问题讨论】:
我只是想知道,如果我将向量设置为函数的原型,我该如何定义它? 我知道我可以选择使用动态内存分配,但我想知道是否可以只使用:
void Function(double vector[]) { }
在代码的主要部分中,为其分配一些条目?
这是一种可接受的方法吗?
【问题讨论】:
这样做
template<class T>
void Function(std::vector<T>& vector)
{
// do your thing
}
对于数组你也可以这样做
template<int N>
void Function(std::array& array)
{
// do your thing
}
【讨论】:
try。
首先,您不应该使用 vector,因为它是标准库 (std::vector) 的一部分。
如果你描述的向量总是有相同的维度,你可以创建一个结构:
struct Vector3D
{
double x = 0.0;
double y = 0.0;
double z = 0.0;
};
然后在你的函数和main中使用它:
void Function(Vector3D v) { }
int main()
{
Vector3D v = {1.0, 0.0, 0.0}; // Unit X
Function(v);
return 0;
}
【讨论】:
vector这个名字并没有错。标准库中的组件为std::vector;它在命名空间std 内。这就是命名空间的用途。是的,如果你用using namespace std; 吹走命名空间,你会遇到冲突。所以不要那样做。