簡化向量初始化:優雅的硬編碼選項
為陣列建立自訂初始值設定項是一種標準且簡單的做法。然而,當涉及向量時,找到類似的機制可能會有點棘手。固有的問題是是否存在一種方法可以像數組一樣乾淨地初始化向量。讓我們探索解決方案。
正如您所提到的,標準方法涉及 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中文網其他相關文章!