首頁 >後端開發 >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