如何清除通用 C++ 代码中的“double”
how to clear `double` in generic c++ code?
我正在编写一个函数,该函数平均每 10 个单位向量中的每 10 个单位。我必须在每 10 次迭代后清除一个临时总和。通常,我会写ave=0.0
但是如果ave
不是双精度而是某种类型的T
,我会遇到问题。例如,如果我用 xyz 坐标平均点,我就无法{x,y,z} = 0.0
为了变通,我尝试创建一个智能指针,然后重置它。 这给了我赛格的错。清除没有指定类型的对象的最佳方法是什么?
template <class T>
vector<T> average(const vector<T> &v, const int n) {
vector<T> ave_vec;
int iave = 0;
shared_ptr<T> ave(new T);
for (int i = 0; i < v.size(); i++) {
*ave += v[i];
iave++;
if (iave == n) {
ave_vec.push_back(*ave/n);
ave.reset(); ///> gives seg fault
iave=0;
}
}
return ave_vec;
}
如果我用ave = 0.0
替换ave.reset()
,代码有效。
要初始化它:
T ave = T();
并重置它:
ave = T();
如果ave
是shared_ptr<T>
,请尝试将ave
重置为默认初始化的T
:
*ave = T();
相关文章:
- C++我的数学有什么问题,为什么我的代码不能正确循环
- 代码在main()中运行,但在函数中出现错误
- 在VS代码中交叉编译Windows与Linux上的MinGW的SDL程序
- 编译包含字符串的代码时遇到问题
- 我在c++代码中生成了一个运行时#3异常
- 如何在linux终端中同时编译和运行c++代码
- 为cl.exe(Visual Studio代码)指定命令行C++版本
- 使用 const double* const 作为模板参数 - 代码性能问题
- "Double or Nothing"赌博机器代码无法超过15组合
- 如何将 Double 从 Qt c++ 代码传递到 QML 代码
- 代码:: blocks printf double windows中的固定精度
- 重新排列代码行时未引发错误"Double free or corruption"
- 用于检查 double 是否为 2 的幂而没有C++位操作的代码
- 如何清除通用 C++ 代码中的“double”
- 代码在嵌套开关中选择的每个情况和错误C4244在c++中从double转换为float后停止/结束
- 为什么此代码显示"cannot convert 'double' to 'double*'"错误?
- 在c++ AMP限制(direct3d)代码中使用int索引,其中double是预期的
- 在c#中使用非托管c++代码对所有double类型返回0
- 模板化代码中的float或double
- 下面的代码有什么问题?它在不使用sprintf或ostream的情况下将double转换为string