我无法理解如何将结构(通过引用)传递给函数,以便可以填充结构的成员函数.到目前为止我写了:
bool data(struct *sampleData)
{
}
int main(int argc, char *argv[]) {
struct sampleData {
int N;
int M;
string sample_name;
string speaker;
};
data(sampleData);
}
Run Code Online (Sandbox Code Playgroud)
我得到的错误是:
C++需要一个类型说明符用于所有声明bool数据(const和testStruct)
我试过这里解释的一些例子:在C++中通过值传递临时struct的简单方法?
希望可以有人帮帮我.
我用C++创建了一个库,我想为这个库创建一个Python Wrapper而我正在使用boost.python- 问题是我已经单独创建.h和.cpp文件,并且由于某种原因,.so文件无法链接这些.cpp文件.
因此,我决定只使用.hpp扩展名并将实现作为头文件包含在内.在C++方面这是好事还是坏事?我希望将我的项目上传到Github,以便最大化最佳解决方案.
PS我认为这个问题会更多地属于programmers.stackexchange.com所以如果是的话,有人可以迁移它.
我需要帮助计算二叉树高度的理论,通常是符号.
我看过以下文章:
其中一个帖子给出了以下符号:
height(node)= max(height(node.L),height(node.R))+ 1
我们假设我有以下二叉树:
10
/ \
5 30
/ \ / \
4 8 28 42
Run Code Online (Sandbox Code Playgroud)
因此,我是否计算左节点(8)和右边最大节点(42)的最大值,然后加1?我不太明白这种符号是如何工作的,以便计算树的高度.
我可能会错误地问这个并让自己看起来非常愚蠢但是这里有:
我正在尝试对.wav文件进行一些音频操作和处理.现在,我能够读取所有数据(包括标题),但需要数据处于频率,为此,我需要使用FFT.
我搜索了互联网的高低,发现了一个,这个例子是从"C中的数字食谱"一书中摘录出来的,然而,我把它修改成使用向量而不是数组.好的,这就是问题所在:
我被给予(作为一个例子使用)一系列数字和采样率:
X = {50, 206, -100, -65, -50, -6, 100, -135}
Run Code Online (Sandbox Code Playgroud)
采样率:8000样本数:8
因此应该回答这个问题:
0Hz A=0 D=1.57079633
1000Hz A=50 D=1.57079633
2000HZ A=100 D=0
3000HZ A=100 D=0
4000HZ A=0 D=3.14159265
Run Code Online (Sandbox Code Playgroud)
我重写的代码编译,然而,当试图将这些数字输入到等式(函数)中时,我得到了一个分段错误.我的代码有问题,或者采样率是否过高?(当使用更小,更小的采样率时,算法不会分段).这是代码:
#include <iostream>
#include <math.h>
#include <vector>
using namespace std;
#define SWAP(a,b) tempr=(a);(a)=(b);(b)=tempr;
#define pi 3.14159
void ComplexFFT(vector<float> &realData, vector<float> &actualData, unsigned long sample_num, unsigned int sample_rate, int sign)
{
unsigned long n, mmax, m, j, istep, i;
double wtemp,wr,wpr,wpi,wi,theta,tempr,tempi;
// CHECK TO SEE IF VECTOR IS EMPTY;
actualData.resize(2*sample_rate, …Run Code Online (Sandbox Code Playgroud) 我试图根据我已经获得并存储在矢量中的数据来绘制图形,但是,我似乎无法找到任何教程或参考,并且给我任何指示我需要做什么.所以这是我的代码:
class Plotter : public QwtPlot
{
public:
Plotter() {
}
};
int main( int argc, char **argv )
{
QApplication app(argc, argv);
//Plotter *d_plot = new Plotter();
Plotter* d_plot = new Plotter();
d_plot->setTitle("DEMO");
d_plot->setCanvasBackground(Qt::white);
d_plot->setAxisScale( QwtPlot::yLeft, 0.1, 50.0 );
d_plot->setAxisScale(QwtPlot::yRight, 0.1, 50.00);
// PLOT THE DATA
std::vector<double> data;
data.push_back(1.03);
data.push_back(13.12);
//....
d_plot->resize( 600, 400 );
d_plot->show();
return app.exec();
}
Run Code Online (Sandbox Code Playgroud)
任何人都可以给我任何想法,我可以使用什么功能来允许我绘制数据?
谢谢
自从我上次访问数组以来已经有一段时间了(我最近一直在使用向量)并且我需要将2D向量转换回2D数组,因为我使用的库接受了double array这个数组的访问器类型的参数是foo[i][j]的例子.
这是我的代码:
double** setupHMM(vector<vector<double> > &vals, int N, int M)
{
double** temp;
temp = new double[N][M];
for(unsigned i=0; (i < N); i++)
{
for(unsigned j=0; (j < M); j++)
{
temp[i][j] = vals[i][j];
}
}
}
Run Code Online (Sandbox Code Playgroud)
有了这个,我明白了 error: ‘M’ cannot appear in a constant-expression
我也尝试过以下方法:
double** setupHMM(vector<vector<double> > &vals, int N, int M)
{
double** temp;
for(unsigned i=0; (i < N); i++)
{
temp[i] = new double[N];
for(unsigned j=0; (j < M); j++)
{ …Run Code Online (Sandbox Code Playgroud) 对不起,如果这个问题引起任何混淆,我希望实现这一点,并且不知道正确的方法来处理这样的事情.
对于我的一个项目,我想实现方法链.我想要包含以下功能:
.toVector()
.toArray()
.toBool()
...
Run Code Online (Sandbox Code Playgroud)
我曾想过将这些放在命名空间中,例如:
namespace Misc {
template<typename T, typename Inverse>
vector<T> toVector(Inverse begin, Inverser end) {
// ...
// ..
}
// ...
// ...
}
Run Code Online (Sandbox Code Playgroud)
这是因为可能有多个类,这些类可以使用这些函数,因此,它必须是OO而不是在不同的类中一次又一次地实现每个函数.
假设我有以下类Wav读取wav文件中包含的数据:
class Wav {
public:
Wav();
Wav(string theFileName);
void getWaveData();
protected:
vector<double> data;
};
Run Code Online (Sandbox Code Playgroud)
data 显式存储为类的向量.
在我的主要内容中,我希望能够做到以下几点:
int main()
{
Wav wave("file.wav");
int* data = wave.getWaveData().toArray(); // Method chaining to store as an array
}
Run Code Online (Sandbox Code Playgroud)
我不知道这是否可能,如果是这样的话,如果不在Misc每个类中反复实现所有函数,我将如何处理这个问题.有没有办法在命名空间和类之间进行通信而不必反复包含所有函数?
我希望有人有一个建议,我会尽力回答任何问题.
编辑:
我写了以下函数:
template<typename T, typename Inverse>
T* toArray(Inverse …Run Code Online (Sandbox Code Playgroud) 这是来自以下问题的跟进问题:wac到wav转换
我已将文件扩展名从.wac更改为.raw并使用以下命令:
sox -r 44100 -e unsigned -b 8 -c 1 input.raw output.wav
Run Code Online (Sandbox Code Playgroud)
这将转换为.wav文件,但是会严重扭曲声音,例如:

应该在以下位置:

有很大的不同,我似乎无法弄清楚我要去哪里。我也尝试了以下方法:
sox input.raw --bits 16 --encoding signed-integer --endian little
output.wav
Run Code Online (Sandbox Code Playgroud)
但是我得到以下信息:
sox FAIL格式:文件“ input.raw”的输入格式错误:未指定采样率
有谁知道一种设置采样率的方法,因此文件正确吗?
我已经问了一个类似的问题,但是,这个问题是不同的,我试过了.
我试图使用Linq读取XML数据,然后我解决了这个问题,但是,我需要选择多个值并将它们存储到Dictionary中.我试过了(评论是我的尝试),但我无法弄明白并得到如下错误:
System.NullReferenceException:对象引用未设置为/ users/p/Projects/dsdsdsds/dsdsdsds/Main中dsdsdsds.MainClass + c__AnonStorey0.<> m__0(System.Xml.Linq.XElement datanum)[0x00000]中对象的实例的.cs:23
我们假设我的XML文件如下所示:
<?xml version="1.0" encoding="UTF-8"?>
<kml xmlns="http://www.opengis.net/kml/2.2">
<Document>
<name>My word place</name>
<Placemark>
<name>Main Building</name>
<id>1</id>
<Polygon>
<extrude>1</extrude>
<altitudeMode>relativeToGround</altitudeMode>
<outerBoundaryIs>
<LinearRing>
<coordinates>
Run Code Online (Sandbox Code Playgroud)
现在我需要得到的是"名称"和"id",并将这些值放入字典中.
这是我的代码:
var xdoc = XDocument.Load ("buildings.kml");
XNamespace kml = "http://www.opengis.net/kml/2.2";
var dict = xdoc.Descendants(kml + "Placemark").ToDictionary (
datanum => datanum.Attribute(kml + "name").Value,
datanum => datanum.Attribute(kml + "id").Value );
/*.ToDictionary(e => e.Element("name").Value,
e => e.Descendants("id")
.Select (item => new Building
{
BuildingName = (string) e.Element(kml + "name").Value,
BuildingID = Convert.ToInt16(item.Element(kml + "id").Value) …Run Code Online (Sandbox Code Playgroud) 为什么不允许这样做,例如:
std::array<auto, 5> myArray {
};
Run Code Online (Sandbox Code Playgroud)
它会让我的生活变得如此简单,因为我可以在数组中存储多个数据类型.我确信这是一个合乎逻辑的解释,只是想知道它是什么.