首页 >后端开发 >C++ >如何在 C 中优雅地初始化向量?

如何在 C 中优雅地初始化向量?

Barbara Streisand
Barbara Streisand原创
2024-12-21 11:33:14173浏览

How Can I Elegantly Initialize Vectors in C  ?

简化向量初始化:优雅的硬编码选项

为数组创建自定义初始值设定项是一种标准且简单的做法。然而,当涉及到向量时,找到类似的机制可能会有点棘手。固有的问题是是否存在一种方法可以像数组一样干净地初始化向量。让我们探索解决方案。

正如您提到的,标准方法涉及 Push_back 操作:

std::vector<int> ints;
ints.push_back(10);
ints.push_back(20);
ints.push_back(30);

虽然此方法达到了其目的,但它与数组初始化的优雅不符。

C 11 的括号封闭初始化

使用 C 11 和 GCC 4.4 等兼容编译器,您可以采用大括号括起来的向量初始化:

std::vector<int> v = {1, 2, 3, 4};

此语法提供了一种简洁而明确的初始化向量的方法.

Boost.Assign库

另一种选择是利用 Boost.Assign 库。它提供了各种向量初始化技术:

使用 list_of:

#include <boost/assign/list_of.hpp>
...
std::vector<int> v = boost::assign::list_of(1)(2)(3)(4);

使用 = 表示法:

#include <boost/assign/std/vector.hpp>
using namespace boost::assign;
...
std::vector<int> v;
v += 1, 2, 3, 4;

但是,请注意 Boost.Assign 会带来一些性能开销由于其底层机制。对于性能敏感的代码,请考虑使用push_back方法。

以上是如何在 C 中优雅地初始化向量?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn