輕鬆附加向量
在向量操作的世界中,經常需要將一個向量附加到另一個向量的末尾。雖然迭代元素並進行單獨插入似乎是顯而易見的方法,但我們在這裡提供更有效率、更優雅的解決方案。
考慮以下程式碼片段:
vector<int> a; vector<int> b;
假設兩個向量都有大約 30 個元素,我們如何將向量 b 的內容加入向量 a 的結尾?
暴力方法將涉及使用 vector
相反,我們引入更有效的方法:
a.insert(a.end(), b.begin(), b.end());
或者,對於C 11 及更高版本,請考慮以下變體:
a.insert(std::end(a), std::begin(b), std::end(b));
這些方法利用std::insert() 函數,函數採用三個參數:插入點的迭代器、到來源範圍開頭的迭代器,以及到來源範圍結尾的迭代器。透過提供適當的迭代器,我們可以將向量 b 的內容無縫附加到向量 a。
程式碼片段的第二個變體採用通用迭代器,使其也適用於陣列 b。然而,這種方法需要 C 11 或更高版本。
對於使用者定義類型,我們可以利用參數依賴查找(ADL) 來進一步簡化程式碼:
using std::begin, std::end; a.insert(end(a), begin(b), end(b));
有了這些優雅的解決方案,附加向量成為一項輕鬆的任務,顯著提高程式碼的效率和可維護性。
以上是如何在 C 中有效地將一個向量附加到另一個向量?的詳細內容。更多資訊請關注PHP中文網其他相關文章!