我理解2個操作的語義, 分配 - 在使用提供的值進行替換之前的分配。 insert - 在指定位置插入值(如果需要,分配新內存)。stl向量分配vs插入
除此之外,還有什麼理由讓一個優先於另一個呢? 或者換句話說,是否有任何理由使用assign而不是insert。
我理解2個操作的語義, 分配 - 在使用提供的值進行替換之前的分配。 insert - 在指定位置插入值(如果需要,分配新內存)。stl向量分配vs插入
除此之外,還有什麼理由讓一個優先於另一個呢? 或者換句話說,是否有任何理由使用assign而不是insert。
如果您希望調用assign
的語義,請調用assign - 如果您希望調用insert
的語義,請調用insert。它們不可互換。
至於在空載體上調用它們,唯一的區別是當你調用assign
時,你不需要提供一個迭代器來插入。可能會有性能差異,但這是特定於實現的,幾乎可以忽略。
assign
和insert
只有在向量爲空時纔是等效的。如果矢量已經是空的,那麼最好使用assign
,因爲insert
會錯誤地向讀者暗示存在要保留的元素。
assign()
將吹掉已在vector
中的任何東西,然後添加新的元素。 insert()
不會觸及vector
中的任何元素。
除此之外,如果您正在修改的vector
開始爲空,則幾乎沒有區別。
也許你可以通過問這個來解決這個問題:「在空STL向量**上分配vs插入**,有什麼區別?」 – 2010-01-22 17:59:01
夠公平的。這就是我想到的。 – Pradyot 2010-01-22 18:01:16