简化向量初始化:优雅的硬编码选项
为数组创建自定义初始值设定项是一种标准且简单的做法。然而,当涉及到向量时,找到类似的机制可能会有点棘手。固有的问题是是否存在一种方法可以像数组一样干净地初始化向量。让我们探索解决方案。
正如您提到的,标准方法涉及 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中文网其他相关文章!