小编use*_*329的帖子

许多GUI控件指示不同的状态

这个问题非常开放,可能这个问题的答案将取决于系统,但平均而言说这是显示不同状态的大矩阵(比如128个元素)的最佳方式?

  • 为每个单元创建一个控件,让GUI库处理所有事件和内容(在Windows 128 HWND:s中)
  • 使用较低级别的图形基元绘制整个矩阵

根据选择,内存/ CPU性能是否有差异?我的应用程序中每个单元格的状态数为4,因此每个单元需要2位来表示它们的状态.每个单元格将由与状态相关的图像表示.

arrays performance user-interface controls

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

#ifdef MACRO是否等同于评论

假设没有定义MACRO,这些是等价的

#ifdef MACRO
    Not valid C or C++ code
#endif

/*
    Not valid C or C++ code
*/
Run Code Online (Sandbox Code Playgroud)

在GCC 4.7.1中,它似乎是等效的,但是有更多的预处理器吗?

c comments conditional-compilation c-preprocessor

6
推荐指数
3
解决办法
9381
查看次数

在不使用iostream的情况下保存c ++ 11随机生成器的状态

在不使用iostream接口的情况下,存储C++ 11随机生成器状态的最佳方法是什么.我想像这里列出的第一个替代品那样做[1]?但是,此方法要求对象包含PRNG状态且仅包含PRNG状态.在partucular,它如果实现使用PIMPL模式失败(至少这是有可能重新加载状态,而不是用坏的数据加载它,当应用程序崩溃),或有与没有的PRNG对象相关联的多个状态变量与生成的序列有关.

对象的大小实现定义的:

我缺少像这样的成员函数

  1. size_t state_size();
  2. const size_t* get_state() const;
  3. void set_state(size_t n_elems,const size_t* state_new);

(1)应返回随机生成器状态数组的大小

(2)应返回指向状态数组的指针.指针由PRNG管理.

(3)应从std::min(n_elems,state_size())state_new指向的缓冲区中复制缓冲区

这种接口允许更灵活的状态操作.或者是否有任何PRNG:s的状态不能表示为无符号整数数组?

[1] 比使用流来节省增强随机生成器状态更快

random c++11

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

在海湾合作委员会编制:-O3有害吗?

我听说不应该用gcc编译-O3选项.真的吗?如果是这样,避免-O3的原因是什么?

optimization gcc

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

实现 VGA 80x25 文本控制台纵横比

I want to implement a text console with the look and feel of an old vga+crt monitor graphics configuration. To do so, I need information on the rendered aspect ratio of a typical setup.

  • 80 x 25 using 9 x 16 cells gives a ratio of 720x400. I have never seen a display with this ratio (It is slightly wider than 16:9). 720x400 is also the resolution when windows 9x splash image is shown.

  • I have measured the ratio from …

aspect-ratio vga

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

如何在doxygen中引用成员组

我找到了如何为一组班级成员命名:

/**\{
\name Foo
*/
 members
/**
\}*/
Run Code Online (Sandbox Code Playgroud)

,但我如何从其他班级成员那里引用Foo?

doxygen documentation-generation

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

ar无法创建存档:"文件格式无法识别"

我有这个makefile

libjackpot.a: jackport.o jackpot.o
    ar -rcs jackport.o jackpot.o

jackpot.o: jackpot.cpp jackpot.h
    g++ jackpot.cpp -std=c++11 -O2 -c

jackport.o: jackport.cpp jackpot.h jackport.h
    g++ jackport.cpp -std=c++11 -O2 -c
Run Code Online (Sandbox Code Playgroud)

不知何故(在我的Linux机器上),我明白了

ar: jackport.o: File format not recognized
Run Code Online (Sandbox Code Playgroud)

ar - 帮助给出了

ar: supported targets: elf64-x86-64 elf32-i386 elf32-x86-64 a.out-i386-linux pei-i386 pei-x86-64 elf64-l1om elf64-k1om elf64-little elf64-big elf32-little elf32-big plugin srec symbolsrec verilog tekhex binary ihex
Run Code Online (Sandbox Code Playgroud)

文件jackport.o

jackport.o: ELF 64-bit LSB relocatable, x86-64, version 1 (SYSV), not stripped
Run Code Online (Sandbox Code Playgroud)

c++ unix-ar

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

开罗的Alpha透明度

我在使用GTK和Cairo显示Alpha透明度时遇到问题。我尝试显示此图像1

如果我进行Alpha混合自我,则一切正常。

手动Alpha混合

如果我将Alpha值直接传递给开罗,则阴影似乎可以渲染得很好,但是发光效果已损坏。

开罗Alpha渲染

这是开罗1.14.2中的错误,还是我错过了一些东西?

//Need deprecated API to get background color
GdkColor color = gtk_widget_get_style(widget)->bg[GTK_STATE_NORMAL];
Pixel color_blend
    {
     uint8_t(255*color.red/65535.0f)
    ,uint8_t(255*color.green/65535.0f)
    ,uint8_t(255*color.blue/65535.0f)
    ,255
    };
while(ptr!=ptr_end)
    {
//  TODO: Interpolate
    auto row_src=size_t(row*factor);
    auto col_src=size_t(col*factor);

    auto alpha=ptr_src[row_src*width_in + col_src].v3/255.0f;
    *ptr=
        {
    //  Using manual alpha blend works  
        uint8_t(alpha*ptr_src[row_src*width_in + col_src].v2 + (1-alpha)*color_blend.v2)
        ,uint8_t(alpha*ptr_src[row_src*width_in + col_src].v1 + (1-alpha)*color_blend.v1)
        ,uint8_t(alpha*ptr_src[row_src*width_in + col_src].v0 + (1-alpha)*color_blend.v0)
        ,255
    /*  This appears to be broken 
        ptr_src[row_src*width_in + col_src].v2
        ,ptr_src[row_src*width_in + col_src].v1
        ,ptr_src[row_src*width_in + col_src].v0
        ,ptr_src[row_src*width_in + col_src].v3*/
        }; …
Run Code Online (Sandbox Code Playgroud)

c++ alpha cairo gtk3

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

为什么std :: span一个指针+大小而不是两个迭代器

看来std::spanC ++ 20中的定义与

template<class T>
class span
     {
     T* begin;
     size_t count;
     };
Run Code Online (Sandbox Code Playgroud)

并不是

template<class Iter>
class span
     {
     Iter begin;
     Iter end;
     };
Run Code Online (Sandbox Code Playgroud)

哪个更通用(可与std :: list,std :: map等配合使用)?

c++ c++20 std-span

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

创建变体交替值和值数组

我想要类似的东西:

template <typename... Ts>
using make_variant_t = /* ??? */;
Run Code Online (Sandbox Code Playgroud)

例如,将其make_variant_t<Foo, Bar>评估为类型

 std::variant<Foo, std::vector<Foo>, Bar, std::vector<Bar>>
Run Code Online (Sandbox Code Playgroud)

按那个顺序。如果可能,如何实现?

c++ variadic-templates c++17

5
推荐指数
3
解决办法
86
查看次数