在C++中,reset和assign都是用于重新設置或重新賦值對象的方法,但是它們之間有一些區別。
示例:
std::shared_ptr<int> ptr(new int(10));
ptr.reset(); // 釋放指向的對象,并將指針置為空
std::unique_ptr<int> ptr(new int(10));
ptr.reset(new int(20)); // 釋放指向的對象,并將指針指向新的對象
示例:
std::vector<int> vec1 = {1, 2, 3};
std::vector<int> vec2 = {4, 5};
vec1.assign(vec2.begin(), vec2.end()); // 用vec2中的元素替換vec1中的元素
std::string str = "hello";
str.assign("world"); // 用"world"替換原有的字符串內容
總的來說,reset主要用于重新初始化對象或釋放對象,而assign主要用于重新分配對象的值。