链接:https://yun.139.com/shareweb/#/w/i/2qie0ciAEzP9j
复制内容打开移动云盘PC客户端,操作更方便哦
一、游戏开发中的向量运算
在游戏引擎中,三维向量的运算是基础操作。以下实现一个简单的 Vector3 类:
cpp复制插入
#include <cmath>
class Vector3 {
public:
float x, y, z;
Vector3(float x = 0, float y = 0, float z = 0) : x(x), y(y), z(z) {}
// 向量加法
Vector3 operator+(const Vector3& other) const {
return Vector3(x + other.x, y + other.y, z + other.z);
}
// 点积(内积)
float Dot(const Vector3& other) const {
return x * other.x + y * other.y + z * other.z;
}
// 向量模长
float Magnitude() const {
return std::sqrt(x*x + y*y + z*z);
}
};
复制插入
二、智能指针管理资源
现代 C++ 推荐使用智能指针避免内存泄漏。以下示例展示 std::unique_ptr 的应用:
cpp复制插入
#include <memory>
#include <iostream>
class Texture {
public:
Texture() { std::cout << "Texture loaded\n"; }
~Texture() { std::cout << "Texture released\n"; }
};
int main() {
// 自动管理纹理生命周期
auto texture = std::make_unique<Texture>();
// 当超出作用域时,texture 自动释放
return 0;
}
复制插入
三、Socket 网络通信
实现基础的 TCP 客户端/服务器模型:
服务器端:
cpp复制插入
#include <iostream>
#include <winsock2.h>
int main() {
WSADATA wsa;
SOCKET server_socket;
sockaddr_in server_addr;
// 初始化 Winsock
WSAStartup(MAKEWORD(2,2), &wsa);
// 创建 Socket
server_socket = socket(AF_INET, SOCK_STREAM, 0);
server_addr.sin_family = AF_INET;
server_addr.sin_addr.s_addr = INADDR_ANY;
server_addr.sin_port = htons(8888);
// 绑定并监听
bind(server_socket, (sockaddr*)&server_addr, sizeof(server_addr));
listen(server_socket, 3);
std::cout << "Server listening on port 8888...\n";
// 接受客户端连接(此处省略具体处理逻辑)
closesocket(server_socket);
WSACleanup();
return 0;
}
复制插入
四、模板元编程优化计算
通过编译时计算实现斐波那契数列:
cpp复制插入
template <int N>
struct Fibonacci {
static constexpr int value = Fibonacci<N-1>::value + Fibonacci<N-2>::value;
};
template <>
struct Fibonacci<0> {
static constexpr int value = 0;
};
template <>
struct Fibonacci<1> {
static constexpr int value = 1;
};
int main() {
constexpr int fib10 = Fibonacci<10>::value; // 编译时计算出 55
return 0;
}
复制插入
五、多线程并发处理
使用 std::thread 实现并行任务:
cpp复制插入
#include <iostream>
#include <thread>
#include <vector>
void task(int id) {
std::cout << "Thread " << id << " executing\n";
}
int main() {
std::vector<std::thread> threads;
for (int i = 0; i < 5; ++i) {
threads.emplace_back(task, i);
}
for (auto& t : threads) {
t.join();
}
return 0;
}
复制插入
总结
C++ 的实战应用需要结合:
- 面向对象设计:构建可维护的类结构
- 资源管理:善用 RAII 和智能指针
- 系统编程:直接操作硬件/网络层
- 编译时优化:通过模板提升运行时效率
- 并发模型:利用多核处理器资源
需要深入某个领域(如图形学、高频交易等)可进一步探讨具体场景的实现方案。


7994

被折叠的 条评论
为什么被折叠?



