C++ reset和assign区别

   2024-10-06 9520
核心提示:在C++中,reset和assign都是用于重新设置或重新赋值对象的方法,但是它们之间有一些区别。reset:reset方法通常用于将对象重新初

在C++中,reset和assign都是用于重新设置或重新赋值对象的方法,但是它们之间有一些区别。

reset:reset方法通常用于将对象重新初始化为其默认状态。对于智能指针,reset方法将释放指向的对象,并将指针置为空。对于unique_ptr和shared_ptr,reset方法还可以接受一个新的对象指针作为参数,用于重置指针指向的对象。

示例:

std::shared_ptr<int> ptr(new int(10));ptr.reset(); // 释放指向的对象,并将指针置为空std::unique_ptr<int> ptr(new int(10));ptr.reset(new int(20)); // 释放指向的对象,并将指针指向新的对象
assign:assign方法通常用于重新分配对象的值。对于STL容器,assign方法用于用新的元素替换容器中的元素。对于字符串类,assign方法用于用新的字符串替换原有的字符串内容。

示例:

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主要用于重新分配对象的值。

 
举报打赏
 
更多>同类物流大全
推荐图文
推荐物流大全
点击排行

网站首页  |  关于我们  |  联系方式 | 网站留言    |  赣ICP备2021007278号