C++ auto 测试代码
时间: 2024-01-14 22:50:38 浏览: 28
以下是一个使用auto关键字的简单示例代码:
```c++
#include <iostream>
#include <vector>
int main() {
std::vector<int> numbers{1, 2, 3, 4, 5};
// 使用auto关键字自动推导变量类型
auto sum = 0;
for (auto num : numbers) {
sum += num;
}
std::cout << "The sum of the numbers is: " << sum << std::endl;
return 0;
}
```
在上面的代码中,我们使用了auto关键字来自动推导变量sum的类型。我们创建了一个名为numbers的std::vector,其中包含一些整数。然后我们使用一个循环来计算所有数字的总和,并将其存储在sum变量中。最后,我们将结果输出到控制台。
相关问题
c++测试代码运行时间
在C++中,可以使用 `std::chrono` 库来计算代码的执行时间。以下是一个示例程序,演示如何使用 `std::chrono` 库测试代码执行时间:
```cpp
#include <iostream>
#include <chrono>
int main() {
auto start = std::chrono::high_resolution_clock::now();
// 调用需要测试代码的函数
auto end = std::chrono::high_resolution_clock::now();
auto duration = std::chrono::duration_cast<std::chrono::milliseconds>(end - start);
std::cout << "Code execution time: " << duration.count() << "ms" << std::endl;
return 0;
}
```
在上面的代码中,我们使用 `std::chrono::high_resolution_clock::now()` 获取当前时间作为开始时间,执行需要测试的代码,然后再次调用 `std::chrono::high_resolution_clock::now()` 获取当前时间作为结束时间。然后,我们计算时间差,并将其转换为毫秒。最后,我们输出代码的执行时间到控制台。
需要注意的是,`std::chrono::high_resolution_clock` 可能会因平台或编译器的不同而有所不同。如果您需要更高精度的计时器,可以使用 `std::chrono::steady_clock`。
c++飞机大战碰撞检测代码
以下是一个简单的C++飞机大战游戏碰撞检测的示例代码:
```c++
struct Rect {
float x, y, width, height;
};
bool checkCollision(Rect rect1, Rect rect2) {
// 计算两个矩形的四条边的位置
float left1 = rect1.x;
float right1 = rect1.x + rect1.width;
float top1 = rect1.y;
float bottom1 = rect1.y + rect1.height;
float left2 = rect2.x;
float right2 = rect2.x + rect2.width;
float top2 = rect2.y;
float bottom2 = rect2.y + rect2.height;
// 矩形重叠的条件是两个矩形的四条边都有交集
if (left1 < right2 && right1 > left2 && top1 < bottom2 && bottom1 > top2) {
return true;
} else {
return false;
}
}
// 飞机类
class Plane {
public:
Rect rect; // 飞机所在的矩形
void update() {
// 更新飞机位置
}
void shoot() {
// 发射子弹
}
};
// 子弹类
class Bullet {
public:
Rect rect; // 子弹所在的矩形
void update() {
// 更新子弹位置
}
};
// 敌机类
class Enemy {
public:
Rect rect; // 敌机所在的矩形
void update() {
// 更新敌机位置
}
};
// 游戏循环中的碰撞检测
void checkCollisions(Plane& plane, std::vector<Bullet>& bullets, std::vector<Enemy>& enemies) {
// 检测飞机和敌机的碰撞
for (auto& enemy : enemies) {
if (checkCollision(plane.rect, enemy.rect)) {
// 碰撞发生,处理逻辑
}
}
// 检测子弹和敌机的碰撞
for (auto& bullet : bullets) {
for (auto& enemy : enemies) {
if (checkCollision(bullet.rect, enemy.rect)) {
// 碰撞发生,处理逻辑
}
}
}
}
```
在这个例子中,我们定义了一个Rect结构体来表示一个矩形的位置和大小,并定义了一个checkCollision函数来检查两个矩形是否相交。然后,我们定义了一个Plane类、一个Bullet类和一个Enemy类来表示游戏中的飞机、子弹和敌机。每个类都有一个rect成员变量来表示它所在的矩形。
在游戏循环中,我们调用checkCollisions函数来检测飞机、子弹和敌机之间的碰撞。我们使用嵌套的循环来遍历所有子弹和敌机的组合,并调用checkCollision函数来检查它们是否相交。如果发生碰撞,则可以在处理逻辑中删除子弹或敌机,或者扣除飞机的生命值。