小编Dar*_*deX的帖子

在 C++ 中从单个向量创建对向量

我有一个偶数大小的向量,我想将其转换为成对的向量,其中每对始终包含两个元素。我知道我可以使用简单的循环来做到这一点,但我想知道是否有一个很好的标准库工具可以做到这一点?可以假设原始向量始终包含偶数个元素。

例子:

vector<int> origin {1, 2, 3, 4, 5, 6, 7, 8};

vector<pair<int, int>> goal { {1, 2}, {3, 4}, {5, 6}, {7, 8} };
Run Code Online (Sandbox Code Playgroud)

c++ stl std stdvector std-pair

25
推荐指数
3
解决办法
2213
查看次数

GCC v12.1 关于串行编译的警告

我今天(2022 年 5 月 12 日升级了整个arch Linux系统。也从 升级为。我尝试通过以下命令使用(编译器集合的一部分)编译我的一些程序:gccv11.2v12.1g++gcc

g++ -O3 -DNDEBUG -Os -Ofast -Og -s -march=native -flto -funroll-all-loops -std=c++20 main.cc -o ./main
Run Code Online (Sandbox Code Playgroud)

程序完美编译并正常运行,没有任何错误,但我收到警告:

lto-wrapper: warning: using serial compilation of 2 LTRANS jobs
Run Code Online (Sandbox Code Playgroud)

但是,当使用它编译同一程序时,v11.2会产生零个错误和警告

我的问题:

  • 这个警告是什么意思?
  • 我怎样才能解决这个问题?
  • 出现此警告是否是由于gcc版本升级所致v12.1

这是g++我机器上的配置:

$ g++ -v
Using built-in specs.
COLLECT_GCC=g++
COLLECT_LTO_WRAPPER=/usr/lib/gcc/x86_64-pc-linux-gnu/12.1.0/lto-wrapper
Target: x86_64-pc-linux-gnu
Configured with: /build/gcc/src/gcc/configure --enable-languages=c,c++,ada,fortran,go,lto,objc,obj-c++ --enable-bootstrap --prefix=/usr --libdir=/usr/lib --libexecdir=/usr/lib --mandir=/usr/share/man --infodir=/usr/share/info --with-bugurl=https://bugs.archlinux.org/ --with-linker-hash-style=gnu --with-system-zlib --enable-__cxa_atexit …
Run Code Online (Sandbox Code Playgroud)

c++ gcc g++ gcc-warning gcc12

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

C 中结构体的默认初始化

我想用纯 C 语言做这样的事情:

struct data_msg {
    uint8_t id = 25;
    uint8_t       data1;
    uint32_t      data2;
}
Run Code Online (Sandbox Code Playgroud)

我需要将 id 默认设置为 25,这样当我创建该结构体的实例时,id 就已经设置为 25,如下所示:

struct data_msg      tmp_msg;
printf("ID: %d", tmp_msg.id); // outputs ID: 25
Run Code Online (Sandbox Code Playgroud)

有没有办法在 C 中做到这一点?我知道可以在C++中完成,但在C中还没有找到方法。

在 C 中执行此操作会引发错误:

struct data_msg { uint8_t id = 25; }

c struct initialization

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

标签 统计

c++ ×2

c ×1

g++ ×1

gcc ×1

gcc-warning ×1

gcc12 ×1

initialization ×1

std ×1

std-pair ×1

stdvector ×1

stl ×1

struct ×1