小编Pho*_*rce的帖子

将结构传递给函数

我无法理解如何将结构(通过引用)传递给函数,以便可以填充结构的成员函数.到目前为止我写了:

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++ struct

32
推荐指数
1
解决办法
13万
查看次数

何时使用.hpp文件

我用C++创建了一个库,我想为这个库创建一个Python Wrapper而我正在使用boost.python- 问题是我已经单独创建.h.cpp文件,并且由于某种原因,.so文件无法链接这些.cpp文件.

因此,我决定只使用.hpp扩展名并将实现作为头文件包含在内.在C++方面这是好事还是坏事?我希望将我的项目上传到Github,以便最大化最佳解决方案.

PS我认为这个问题会更多地属于programmers.stackexchange.com所以如果是的话,有人可以迁移它.

c++ header-files

14
推荐指数
1
解决办法
6万
查看次数

计算二叉树的高度

我需要帮助计算二叉树高度的理论,通常是符号.

我看过以下文章:

计算二叉树的高度

其中一个帖子给出了以下符号:

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?我不太明白这种符号是如何工作的,以便计算树的高度.

binary-tree data-structures

11
推荐指数
2
解决办法
4万
查看次数

音频处理C++ - FFT

我可能会错误地问这个并让自己看起来非常愚蠢但是这里有:

我正在尝试对.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)

c++ algorithm math fft

6
推荐指数
1
解决办法
2477
查看次数

C++ Qwt - 从向量绘制数据

我试图根据我已经获得并存储在矢量中的数据来绘制图形,但是,我似乎无法找到任何教程或参考,并且给我任何指示我需要做什么.所以这是我的代码:

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)

任何人都可以给我任何想法,我可以使用什么功能来允许我绘制数据?

谢谢

c++ qt qwt

6
推荐指数
1
解决办法
9309
查看次数

将2D矢量转换为2D数组

自从我上次访问数组以来已经有一段时间了(我最近一直在使用向量)并且我需要将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)

c++ arrays vector

5
推荐指数
2
解决办法
7097
查看次数

从命名空间链接的方法

对不起,如果这个问题引起任何混淆,我希望实现这一点,并且不知道正确的方法来处理这样的事情.

对于我的一个项目,我想实现方法链.我想要包含以下功能:

.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)

c++ oop method-chaining

5
推荐指数
1
解决办法
236
查看次数

Sox-转换文件未指定采样率

这是来自以下问题的跟进问题: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”的输入格式错误:未指定采样率

有谁知道一种设置采样率的方法,因此文件正确吗?

audio wav sox

5
推荐指数
1
解决办法
5163
查看次数

LINQ to Dictionary - 使用XML

我已经问了一个类似的问题,但是,这个问题是不同的,我试过了.

我试图使用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)

c# xml linq

4
推荐指数
1
解决办法
1786
查看次数

为什么不能使用auto作为模板类型参数(例如std :: array <auto,5>)?

为什么不允许这样做,例如:

std::array<auto, 5> myArray {

};
Run Code Online (Sandbox Code Playgroud)

它会让我的生活变得如此简单,因为我可以在数组中存储多个数据类型.我确信这是一个合乎逻辑的解释,只是想知道它是什么.

c++ stl c++11

4
推荐指数
3
解决办法
1057
查看次数

标签 统计

c++ ×7

algorithm ×1

arrays ×1

audio ×1

binary-tree ×1

c# ×1

c++11 ×1

data-structures ×1

fft ×1

header-files ×1

linq ×1

math ×1

method-chaining ×1

oop ×1

qt ×1

qwt ×1

sox ×1

stl ×1

struct ×1

vector ×1

wav ×1

xml ×1