c++ - 如何打印双指针数组
问题描述
我有两个要打印的双指针数组
但不知何故我无法做到..
double *noise_feature = new double[5];
double *basic_feature = new double[39];
noise_feature_extraction(sig, len, noise_feature);
basic_feature_extraction(sig, len, basic_feature);
cout << "\n";
printf("Noice features are");
for (auto i = noise_feature.begin(); i != noise_feature.end(); ++i)
cout << *i << " ";
cout << "\n";
printf("Basic features are");
for (auto i = basic_feature.begin(); i != basic_feature.end(); ++i)
cout << *i << " ";
cout << "\n";
这会产生这样的错误
Pan_Tompkins.cpp:992:29: error: member reference base type 'double *' is not a structure or union
for (auto i = noise_feature.begin(); i != noise_feature.end(); ++i)
~~~~~~~~~~~~~^~~~~~
Pan_Tompkins.cpp:992:57: error: member reference base type 'double *' is not a structure or union
for (auto i = noise_feature.begin(); i != noise_feature.end(); ++i)
我试过这样打印
printf("%g",noise_feature);
printf("%g",basic_feature);
这不会给出错误,但也不会打印任何内容。
如何打印这两个双数组以查看它们的值?
解决方案
您在堆上请求一个原始数组并丢弃它有多少元素的信息。回顾
double *noise_feature = new double[5];
只声明一个指向double
. 您知道它是一个长度为 5 的连续数组这一事实可以以不同的方式使用。要么在代码中保留那个神奇的数字文字;
for (auto value = noise_feature; value != noise_feature + 5; ++value)
// not maintainable, but works: ^^^^^^^^^^^^^^^^^
cout << *value << " ";
或者你在堆栈上使用原始数组。在这里,长度被烘焙到类型中,因此不会丢失。例如,您可以使用基于范围的 for 循环对其进行迭代。
double noise_features[5];
// ...
for (double value : noise_features)
std::cout << value << ' ';
std::vector
但是,如果序列的大小仅在运行时已知,或者std::array
它是固定长度的序列,则首选的解决方案是使用。
推荐阅读
- android - kotlin协程磁盘违规严格模式
- groovy - 如何在 Groovy 中编写这个 Gradle 构建脚本片段?
- matlab - 具有多个输出的 Matlab `rowfun` 函数:可以安全地假设行顺序?
- python - df.describe() 不显示大数字列的所有统计信息
- sql - 将一行转为列
- c# - 按下按钮时未找到新的 MVC 控制器
- windows - 如何以编程方式检查驱动器是否受 Windows 中的系统还原功能影响?
- jquery - 使用 AJAX 将文件数据从用户输入(html)发送到服务器 NodeJS 进行处理
- python - Django 多用户模型
- javascript - 用鼠标移动动态创建的 SVG