2010-01-22 73 views
4

我理解2個操作的語義, 分配 - 在使用提供的值進行替換之前的分配。 insert - 在指定位置插入值(如果需要,分配新內存)。stl向量分配vs插入

除此之外,還有什麼理由讓一個優先於另一個呢? 或者換句話說,是否有任何理由使用assign而不是insert。

+2

也許你可以通過問這個來解決這個問題:「在空STL向量**上分配vs插入**,有什麼區別?」 – 2010-01-22 17:59:01

+0

夠公平的。這就是我想到的。 – Pradyot 2010-01-22 18:01:16

回答

4

如果您希望調用assign的語義,請調用assign - 如果您希望調用insert的語義,請調用insert。它們不可互換。

至於在空載體上調用它們,唯一的區別是當你調用assign時,你不需要提供一個迭代器來插入。可能會有性能差異,但這是特定於實現的,幾乎可以忽略。

6

assigninsert只有在向量爲空時纔是等效的。如果矢量已經是空的,那麼最好使用assign,因爲insert會錯誤地向讀者暗示存在要保留的元素。

3

assign()將吹掉已在vector中的任何東西,然後添加新的元素。 insert()不會觸及vector中的任何元素。

除此之外,如果您正在修改的vector開始爲空,則幾乎沒有區別。