我有一个偶数大小的向量,我想将其转换为成对的向量,其中每对始终包含两个元素。我知道我可以使用简单的循环来做到这一点,但我想知道是否有一个很好的标准库工具可以做到这一点?可以假设原始向量始终包含偶数个元素。
例子:
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) 我今天(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 语言做这样的事情:
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; }