- 博客(10)
- 资源 (12)
- 收藏
- 关注
原创 删除STL元素,如何选择最合适的方法
是一个算法,用于将指定的元素移动到容器的末尾,并返回一个新的末尾迭代器。它不修改容器的大小,仅仅改变元素的排列顺序,实际删除元素需要配合。不会改变容器的大小,它只会将满足条件的元素移动到容器的末尾,并返回一个指向新尾部的迭代器。它不会删除元素,只是将它们移到容器的末尾,实际删除元素需要结合 erase()它会影响容器的大小,并且会移动容器中的元素,以保证没有空洞。是容器的成员函数,它可以直接删除容器中的元素并修改容器大小。直接删除指定的元素,并缩小容器的大小,适用于。,删除指定的元素,并改变容器的大小。
2025-04-29 17:26:14
431
原创 std::map和std::multimap的区别和用法说明
std::map和都是 C++ 标准库中的关联容器,它们都使用键值对存储元素,并且通常基于红黑树实现,提供对键的有序访问。它们的主要区别在于键是否允许重复。std::map:不允许具有相同键的元素存在。每个键只能对应一个值。:允许具有相同键的元素存在。一个键可以对应多个值。
2025-04-29 17:19:19
786
原创 C++容器分类
分类容器类型说明关联容器std::mapstd::set键值对映射,支持高效查找,排序或无序存储链表容器std::list支持高效的插入和删除操作,但随机访问性能差数组容器std::array高效的随机访问,内存连续,适用于频繁的元素访问和尾部操作关联容器:适合需要高效查找和排序的数据场景。链表容器:适合需要频繁进行插入和删除操作,但随机访问不重要的场景。数组容器:适合对内存高效利用和频繁的随机访问有要求的场景。
2025-04-29 16:42:18
543
原创 使用 std::move 和右值引用
std::move和右值引用通过启用移动语义,可以在不进行深拷贝的情况下高效地转移资源。这对于避免不必要的内存分配和复制操作,特别是在操作大型对象和容器时,具有显著的性能提升。通过正确使用std::move,可以在许多场景中显著减少性能损耗。
2024-12-31 14:42:42
675
原创 C++重载->运算符
为了这样做,它使用了 `const_cast` 去掉 `const` 限制,并调用非 `const` 版本的 `operator->()`。- `const_cast(*this)` 将 `*this` 转换为非 `const` 类型,以便调用非 `const` 版本的 `operator->()`。- 使用 `const_cast` 将 `*this` 转换为非 `const`,然后委托给非 `const` 重载版本。这两个 `->` 运算符的重载写法是**正确的**,没有问题。
2024-11-18 10:01:18
1652
原创 C++禁用拷贝构造和赋值操作符的作用、语法解析、使用场景和示例
在 C++ 编程中,有时我们希望**禁止对象的拷贝构造和赋值操作**,以避免拷贝操作带来的不必要的性能开销、数据安全问题或者不正确的行为。为了实现这一目的,我们可以禁用类的**拷贝构造函数**和**赋值操作符**。3. **不可复制对象**:有些对象在语义上不应该被复制,比如 `std::unique_ptr` 或互斥锁(`std::mutex`)。**注意**:这种方法虽然可以有效禁止拷贝,但在 C++11 之后已不再推荐使用。2. **单例模式**:为了确保只有一个实例,需要防止拷贝和赋值。
2024-11-17 11:25:05
316
原创 svn:externals外部链接相关操作,查看、增加和删除外部链接
在 SVN 中,`svn:externals` 属性用于添加外部链接,使指定目录可以引用另一个 SVN 仓库中的目录或文件。- 如果该目录有外部链接,命令会返回 `svn:externals` 属性的值(包括外部链接的路径信息)。- 如果项目的多个子目录中也有外部链接,需要进入每个有 `svn:externals` 属性的子目录,重复上述步骤删除该属性。- 在资源管理器中,右键点击要设置外部链接的目录,选择 **TortoiseSVN** > **Properties**。
2024-11-02 11:10:12
2601
原创 svn status命令打印结果解析
`A + src/new_feature.cpp`:`src/new_feature.cpp` 文件被添加,并且带有“+”标记表示是文件拷贝或移动的结果。- `D src/old_feature.cpp`:`src/old_feature.cpp` 文件被删除,但还未提交删除操作。- **X (External)**:文件或目录是一个外部引用(通过 `svn:externals` 引入)。- **R (Replaced)**:文件被替换,即删除后再添加了同名的文件。
2024-11-02 11:03:52
597
原创 svn递归删除目录下所有的非版本控制文件
I]'` 只保留以 `?` 或 `I` 开头的行,表示未受控制或被忽略的文件。3. 在弹出的窗口中,点击 **显示未版本控制的文件 (Show unversioned files)**。- `svn status --no-ignore` 列出所有未受版本控制的文件和被忽略的文件。> **注意**:此命令会永久删除未版本控制的文件和文件夹。4. 勾选所有未版本控制的文件,然后右键选择 **删除 (Delete)**。1. **导航到 SVN 项目的根目录**。1. **打开项目的根目录**。
2024-11-02 11:01:52
373
原创 Docker原理和应用简介
使用Docker构建一致的测试和生产环境,确保代码在开发、测试和生产环境中运行一致,减少“它在我机器上能跑”的问题。- **层**:Docker镜像由多层文件系统组成,每一层都代表镜像的一个修改点,层的合并形成了最终的镜像。- **Cgroups(控制组)**:限制、计量和隔离容器使用的资源(如CPU、内存、网络带宽等)。- **镜像**:容器的只读模板,包含了应用程序和其依赖的所有内容。- **Namespaces**:为容器提供隔离的环境,使其拥有独立的文件系统、网络、进程等。
2024-07-24 14:26:10
272
1
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人