小编use*_*759的帖子

是否可以使用C++模板来控制代码生成?

是否可以使用C++模板来控制代码生成?

像(伪代码......)

template<int i, int j> void f() {
#if i > j
#define
  //code...
#else
  //code...
#endif
}
Run Code Online (Sandbox Code Playgroud)

(我开始习惯模板,但我想知道它们有多强大).

谢谢!

c++ macros templates code-generation

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

C++中的allocator是如何实现的?

我试图std::allocator在C++中更好地理解,我遇到了这个问题,在我看来实际上只有一个分配器类通常被容器使用(比如std::vector)我的问题是这个分配器是如何实现的?它是否像定期重新分配的堆栈一样?如果不是如何实际实施?

c++ memory-management

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

使用Power Point和乳胶绘制有向图

有谁知道在乳胶中绘制类似以下内容的方法吗?我敢打赌tikzpicture可以实现这一目标,但是有人可以给我展示一个简单的例子吗?

在此处输入图片说明

感谢作者:https : //commons.wikimedia.org/wiki/User : Accountalive

latex

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

C中的浮点常数,位表示

可以访问C中浮点常量的位表示;

例如,我想分配

uint64_t x = //bit representation of 5.74;
Run Code Online (Sandbox Code Playgroud)

由0x40b7ae14表示

你认为有可能吗?

c floating-point types constants

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

为什么我的fprintf无法将stdout作为流传递?

我有以下功能:

void print_out_str(FILE* outstream, UINT x, int n) {

   assert(n >= 1);

   int n1, n2, j;

   n1 = (n - 1)/64; n2 = n % 64;
   for(j = 0; j <= n1 - 1; j++) 
      fprintf(outstream,"%016llx ",x[j]); //padding with 0
   fprintf(outstream,"%016llx ",x[n1] & ((1ULL<<n2) - 1ULL));
Run Code Online (Sandbox Code Playgroud)

"outstream"是我要打印的地方,UINT是一个typedef for uint64_t*n我要打印的位数.

我不明白为什么,但每次我尝试调用这样的函数程序崩溃与分段错误.我已经尝试使用GDB来理解变量content(outstream, x, n)是否符合我的预期,并且没问题.具体来说,我尝试使用两个元素的数组,n = 87且x [0] = x [1] = 0,outstream = stdout.

我错过了什么吗?

更新:

更多信息......

这是我在提到的函数之前调用的代码:

void test_set_bit() {
   int nbits_to_allocate, i;
   UINT …
Run Code Online (Sandbox Code Playgroud)

c

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

如何从正常分布中采样限制到一定的间隔,C++实现?

使用此功能,我可以从正态分布中进行采样.我想知道如何从限制到特定间隔的正态分布中有效地采样[a,b].我的琐碎方法是从正态分布中采样,然后保留值,如果它属于某个间隔,否则重新采样.但是在我得到合适的值之前可能会丢弃许多值.

我也可以使用三角形分布近似正态分布,但我认为这不够准确.

我也可以尝试处理累积函数,但可能这也会很慢.有没有有效的方法来解决这个问题?

谢谢

c++ distribution normal-distribution

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

理解一些涉及const类型的C++代码

参考这个问题中报告的代码,我有以下问题,以确保我理解发生了什么.

class Integer32 {
public:
    Integer32() {
        this->setData(0);
    }
    Integer32(const Integer32& x) {
        this->setData(x.getData());
    }
    Integer32(int data) {
        this->data = data;
    }
    Integer32& operator=(const Integer32& x) {
        if (this != &x) {
            this->setData(x.getData());
        }
        return *this;
    }
    Integer32& operator=(const int& x) {
        this->setData(x);
        return *this;
    }
    Integer32 operator+(const Integer32& x) const {
        return Integer32(this->getData() + x.getData());
    }
    void setData(int data) {
        this->data = data;
    }
    int getData() const {
        return data;
    }
private:
    int data;
};

int main(int …
Run Code Online (Sandbox Code Playgroud)

c++ c++11

-1
推荐指数
1
解决办法
78
查看次数