小编Fed*_*ico的帖子

动态分配矢量(或矢量矢量)

我需要动态分配其大小在运行时给出的1-D和2-D数组.

我设法"发现" std::vector,我认为这符合我的目的,但我想问一下我写的是否正确和/或可以改进.

这就是我正在做的事情:

#include <vector>

typedef std::vector< std::vector<double> > matrix;

//... various code and other stuff

std::vector<double> *name = new std::vector<double> (size);
matrix *name2 = new matrix(sizeX, std::vector<double>(sizeY));
Run Code Online (Sandbox Code Playgroud)

c++ vector

19
推荐指数
3
解决办法
7万
查看次数

CORDIC Arcsine实现失败

我最近实现了一个CORDIC函数库来减少所需的计算能力(我的项目基于PowerPC,并且其执行时间规范非常严格).语言是ANSI-C.

其他函数(sin/cos/atan)在32位和64位实现中的精度限制内工作.

不幸的是,asin()函数系统地失败了某些输入.

出于测试目的,我已经实现了一个.h用于simulink S-Function的文件.(这只是为了方便起见,您可以将以下内容编译为独立版.exe,只需进行少量更改)

注意:我强制进行32次迭代,因为我工作在32位精度,并且需要最大可能的精度.

Cordic.h:

#include <stdio.h>
#include <stdlib.h>

#define FLOAT32 float
#define INT32 signed long int
#define BIT_XOR ^

#define CORDIC_1K_32 0x26DD3B6A                  
#define MUL_32       1073741824.0F     /*needed to scale float -> int*/            
#define INV_MUL_32   9.313225746E-10F  /*needed to scale int -> float*/

INT32 CORDIC_CTAB_32 [] = {0x3243f6a8, 0x1dac6705, 0x0fadbafc, 0x07f56ea6, 0x03feab76, 0x01ffd55b, 0x00fffaaa, 0x007fff55, 
                           0x003fffea, 0x001ffffd, 0x000fffff, 0x0007ffff, 0x0003ffff, 0x0001ffff, 0x0000ffff, 0x00007fff, 
                           0x00003fff, 0x00001fff, 0x00000fff, 0x000007ff, 0x000003ff, 0x000001ff, 0x000000ff, 0x0000007f, 
                           0x0000003f, 0x0000001f, 0x0000000f, 0x00000008, 0x00000004, …
Run Code Online (Sandbox Code Playgroud)

c math

10
推荐指数
1
解决办法
1561
查看次数

如何正确定义析构函数

我对C++(以及一般的编程)比较陌生,所以如果问题不是很清楚,请原谅我.

我所拥有的是一个程序,其中创建了一个内部定义的类[我们称之为"class1"]的一定数量的对象.该程序工作得非常好,对象可以做到他们应该做的事情.

我目前要解决的问题如下:在程序退出之前,这些对象不会被销毁(因此内存不会被解除分配),但我需要更早的内存.

在该类的其他成员中,存在其他内部定义的类的对象(其还具有作为第三类的对象的成员).

我的问题如下:如何正确定义"class1"对象的析构函数,以便取消所有数据并释放内存?

我发现了(可能这对你来说很明显)一个析构函数就像

class1::~class1(void) {

}
Run Code Online (Sandbox Code Playgroud)

将无法工作(我为所有内部定义的类定义了类似的析构函数).

阅读我明白我的错误可能是那个什么都不做的析构函数.我该如何解决这个问题?

感谢任何回答/帮助/评论的人.

费德里科

c++ memory-management

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

全局数组或'#define'的"数组"的替代品?

我当前的代码使用一些#defines将所有常量都放在一个.h文件中.

程序规范的一个新修改就是这样,这将需要一些常量依赖于大小写,即变量将设置大小写(可能是3个),并且根据它,必须使用适当的值.这些常数,例如:

#define CONSTANT1 1.0F
#define CONSTANT2 2.0F

float foo(float var)
{
    return (CONSTANT1 + CONSTANT2*var);
}
Run Code Online (Sandbox Code Playgroud)

我现在可以想到以两种方式解决这个问题:

Way1- #define对每个可能的值都有一个,实现一个switch-case带有3个代码的代码,并在每个代码中使用相应的常量

#define CONSTANT1_a 1.0F
#define CONSTANT2_a 2.0F

#define CONSTANT1_b 2.0F
#define CONSTANT2_b 3.0F

#define CONSTANT1_c 3.0F
#define CONSTANT2_c 4.0F

switch(var_case)
{
case 0:
     float foo(float var)
     {
         return (CONSTANT1_a + CONSTANT2_a*var);
     }
case 1:
     float foo(float var)
     {
         return (CONSTANT1_b + CONSTANT2_b*var);
     }
case 2:
     float foo(float var)
     {
         return (CONSTANT1_c + CONSTANT2_c*var);
     } …
Run Code Online (Sandbox Code Playgroud)

c arrays c-preprocessor

0
推荐指数
1
解决办法
142
查看次数

标签 统计

c ×2

c++ ×2

arrays ×1

c-preprocessor ×1

math ×1

memory-management ×1

vector ×1