將向量附加到自身的優雅解決方案
複製向量的內容並將其附加到原始向量是一種常見的操作。然而,在沒有循環的情況下有效實現這一點可能具有挑戰性。
挑戰討論
這個問題突出了 std::vector::insert 和 std::copy 的局限性對於這個特定的任務。 std::vector::insert 禁止使用迭代器來引用目前向量,而 std::copy 在此上下文中使用時會觸發分段錯誤。
最佳解
最佳解法是將std::vector::resize (或std::vector::reserve)與std::copy_n結合起來。以下程式碼示範了這個方法:
或者,您可以使用std::vector::reserve 和std::back_inserter:
說明說明
說明說明
說明說明
說明說明說明 std::vector::resize 會在向量的新大小超過舊大小時重新分配向量容量。 std::copy_n 將指定數量的元素從向量的開頭複製到新位置。 使用 std::vector::reserve 時,std::copy_n 是必要的,因為 end() 迭代器指向超過向量末尾的一個元素。這使得它對於插入無效。 結論該解決方案提供了一種簡潔有效的方法來將向量的內容附加到自身,而無需訴諸基於循環的方法執行。透過利用 resize 和 copy_n 操作,您可以以最小的程式碼開銷實現所需的功能。以上是如何在沒有循環的情況下有效地將向量附加到自身?的詳細內容。更多資訊請關注PHP中文網其他相關文章!