下面我将为你介绍C++内存管理、模板初阶以及STL简介:
一、C++内存管理
在C++中,内存管理是开发者需要重点关注的部分,主要包括栈内存和堆内存的管理。
栈内存
函数内部的局部变量、函数参数等通常存储在栈上,生命周期由编译器自动管理。例如:
void func() {
int a = 10; // a在栈上分配,函数结束时自动释放
}
堆内存
通过new和delete手动管理动态内存:
int* p = new int(20); // 在堆上分配int
delete p; // 释放内存
若忘记delete会导致内存泄漏。
智能指针(C++11起)
自动管理堆内存的生命周期:
#include <memory>
std::shared_ptr<int> ptr = std::make_shared<int>(30);
// 离开作用域时自动释放
二、模板初阶
模板支持泛型编程,允许代码适应多种数据类型。
1. 函数模板
template <typename T>
void swap(T& a, T& b) {
T tmp = a;
a = b;
b = tmp;
}
调用时编译器自动推导类型:
int x = 1, y = 2;
swap(x, y); // T被推导为int
2. 类模板
template <typename T>
class Stack {
private:
T* data;
public:
void push(T val);
T pop();
};
使用时需显式指定类型:
Stack<std::string> s; // 存储string的栈
三、STL简介
STL(Standard Template Library)是C++标准库的核心,包含四大组件:
1. 容器(Containers)
- 序列容器:vector, list, deque
- 关联容器:map, set, unordered_map
示例:
#include <vector>
std::vector<int> vec = {1, 2, 3};
vec.push_back(4); // 添加元素
2. 算法(Algorithms)
提供通用算法如排序、查找:
#include <algorithm>
std::sort(vec.begin(), vec.end()); // 排序
3. 迭代器(Iterators)
用于遍历容器:
for (auto it = vec.begin(); it != vec.end(); ++it) {
std::cout << *it << " ";
}
4. 函数对象(Functors)
可调用对象,用于定制操作:
struct Compare {
bool operator()(int a, int b) { return a > b; }
};
std::sort(vec.begin(), vec.end(), Compare());
总结
- 内存管理需注意手动new/delete的配对使用。
- 模板提高了代码复用性,是泛型编程的基础。
- STL通过标准化组件大幅提升开发效率。
通过合理组合这些技术,可以构建高效且可维护的C++程序。
网硕互联帮助中心





评论前必须登录!
注册