gpt4 book ai didi

c++ - 将 vector 数组作为函数参数传递(值不会改变)

转载 作者:行者123 更新时间:2023-11-30 00:50:44 28 4
gpt4 key购买 nike

我在一个类中有一组 vector :

class MeasurementData
{
private:
std::vector<double> m_measuredStrengths[3];
}

我想要另一个类的函数来检查它并根据分析传回一个整数,例如

int CStrengthAnalyser::GetBestFit(std::vector<double> measuredStrengths[3])
{
int bestFit = -1;
// do stuff
return bestFit;
}

我对传递这种对象的最佳实践感到有点困惑,再加上设置我的接收函数以保证不更改原始数据。

我的函数声明是否符合原样,或者我是否需要添加一些最佳实践调整?

最佳答案

您现在拥有的功能与以下功能相同:

int CStrengthAnalyser::GetBestFit(std::vector<double> * measuredStrengths )

所以肯定可以修改vector秒。如果你总是处理一个大小为 3 的数组,你可以使用 const引用大小为 3 的数组。

int CStrengthAnalyser::GetBestFit(std::vector<double> const (&measuredStrengths)[3])

或者如果你想让它更通用:

struct CStrengthAnalyser
{
// ...

template<std::size_t N>
int GetBestFit(std::vector<double> const (&measuredStrengths)[N])
{ ... }
};

在这种情况下,成员函数定义必须出现在 header 中(或者,准确地说,该定义必须在调用点对编译器可见)。

如果你想避免对数组语法的丑陋引用,你可以更改 MeasurementData包含 std::array<std::vector<double>, 3> 的定义而不是普通的 C 数组。然后传递对它的引用更干净

int CStrengthAnalyser::GetBestFit(std::array<std::vector<double>, 3> const& measuredStrengths)

最后,您还可以推断出 std::array 的大小使用如前所示的函数模板。

关于c++ - 将 vector 数组作为函数参数传递(值不会改变),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24039087/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com