在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
的大小。它们的操作目的不同,但在某些情况下可能会有一些重叠。选择使用哪个取决于具体的需求和情况。