在C++中,push_back
和resize
是兩種用于操作std::vector
的成員函數。
push_back
用于在std::vector
的末尾添加一個元素,并將std::vector
的大小增加1。如果std::vector
沒有足夠的空間來容納新元素,則push_back
會調用realloc
函數來重新分配內存以容納新元素,并將舊元素復制到新內存中。因此,push_back
的時間復雜度為O(1)或O(n),取決于是否需要重新分配內存。
resize
用于改變std::vector
的大小,如果新大小大于當前大小,則在末尾插入默認值初始化的元素,如果新大小小于當前大小,則刪除末尾的元素。如果新大小大于當前容量,則resize
會調用realloc
函數來重新分配內存以容納更多元素,并將舊元素復制到新內存中。因此,resize
的時間復雜度為O(1)或O(n),取決于是否需要重新分配內存。
總的來說,push_back
用于在std::vector
的末尾添加一個元素,而resize
用于改變std::vector
的大小。它們的操作目的不同,但在某些情況下可能會有一些重疊。選擇使用哪個取決于具體的需求和情況。