C++(reset())
在 C++ 中,reset()
可能指的是不同的概念,具体取决于上下文。以下是三个常见的用法:
1. std::shared_ptr::reset()
:
在 C++ 中,std::shared_ptr
是用于管理共享所有权的智能指针,reset()
是 std::shared_ptr
提供的一个成员函数。这个函数的作用是将 std::shared_ptr
重新指向新的资源或者置空。如果 std::shared_ptr
不再管理任何资源,它将被置为空。
#include <memory>
#include <iostream>
int main() {
std::shared_ptr<int> ptr = std::make_shared<int>(42);
// reset 指向新的资源
ptr.reset(new int(100));
// 输出新的值
std::cout << *ptr << std::endl;
// reset 置空 shared_ptr
ptr.reset();
// 检查 shared_ptr 是否为空
if (!ptr) {
std::cout << "shared_ptr is empty." << std::endl;
}
return 0;
}
100
shared_ptr is empty.
在这个例子中,ptr.reset(new int(100))
使 ptr
不再指向原始的 int
资源,而是指向一个新的动态分配的 int
。
2. std::unique_ptr::reset()
:
std::unique_ptr
是用于独占所有权的智能指针,也提供了 reset()
函数。它的行为与 std::shared_ptr
中的类似,但由于 std::unique_ptr
的特性,它不会共享所有权。
#include <memory>
#include <iostream>
int main() {
std::unique_ptr<int> ptr = std::make_unique<int>(42);
// reset 指向新的资源
ptr.reset(new int(100));
// 输出新的值
std::cout << *ptr << std::endl;
// reset 置空 unique_ptr
ptr.reset();
// 检查 unique_ptr 是否为空
if (!ptr) {
std::cout << "unique_ptr is empty." << std::endl;
}
return 0;
}
100
unique_ptr is empty.
这个例子中的 ptr.reset(new int(100))
同样使 ptr
不再指向原始的 int
资源,而是指向一个新的动态分配的 int
。
3. std::vector
#include <iostream>
#include <vector>
int main() {
std::vector<int> vec = {1, 2, 3, 4, 5};
std::cout << vec.size() << std::endl; // 输出 5
vec.clear(); // 使用clear()函数清空vector中的元素
std::cout << vec.size() << std::endl; // 输出 0
return 0;
}
在这个例子中,clear()
函数用于清空 vector 中的所有元素,实现了reset的效果,但是在STL中并没有名为reset()
的函数。
总的来说,reset()
函数在 C++ 中的具体用法取决于具体的类或对象,但通常用于清除对象的内容或重置对象的状态。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2021-12-14 Python del、pop()、remove()、clear()
2021-12-14 Python 浮点型精度问题