C++struct结构体知识传送门

本文探讨了C++中结构体(struct)的内存分配和布局,通过不同示例分析了不同类型的成员在结构体中如何占用内存。文章提到了32位机器上的数据类型大小,并讨论了struct与typedef struct的区别,强调了理解C/C++基础知识的重要性,特别是对于面试和数据结构的学习。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.记得当时刷题刷过一道选择体,问我几个结构体他们的分配的内存空间的大小哪个是对的,今天终于明白一点了

首先假设是在32位机器上

char       1Byte
short      2Byte
int        4Byte

float       4Byte
long long  8Byte
string     32Byte(空字符串,STL构造函数暂且将其大小置为32Byte)

名称

应用环境

类型

长度

取值

bool

标准的C++

布尔型

1个字节

false和true(0和1的区别)

BOOL

VC++

int型

视实际环境来定,一般认为是4个字节

0和非0

图表来自:

当然,以下是使用C++编写的一个基本的解决方案,这里我们采用广度优先搜索(BFS)策略: ```cpp #include <iostream> #include <vector> #include <queue> using namespace std; // 定义节点结构体,包含置和距离信息 struct Node { int position; int distance; }; int shortestPath(int n, vector<pair<int, int>>& portals, int start) { // 创建邻接矩阵表示图 vector<vector<Node>> graph(n + 2); // 加上入口和出口 for (const auto& [u, v] : portals) { graph[u].push_back({v, 1}); // 每个传送门之间的距离为1 graph[v].push_back({u, 1}); } queue<Node> q; q.push({start, 0}); // 初始化队列,起点距离为0 while (!q.empty()) { Node current = q.front(); q.pop(); // 检查邻居并更新距离 if (current.position == 0 || current.position == n + 1) { return current.distance; // 找到出口,返回距离 } for (Node neighbor : graph[current.position]) { if (neighbor.distance == 0) { // 更新未访问过的邻居距离 neighbor.distance = current.distance + 1; q.push(neighbor); } } } // 如果找不到出口,说明死循环,应该不会出现这种情况,除非输入有误 return -1; // 返回无效结果,通常意味着错误的输入或无解 } int main() { int n, m; cin >> n >> m; vector<pair<int, int>> portals(m); for (int i = 0; i < m; ++i) { cin >> portals[i].first >> portals[i].second; } int start; cin >> start; int result = shortestPath(n, portals, start); cout << "最少步数: " << result << endl; return 0; } ``` 这个代码首先定义了一个结构体`Node`来存储置和距离信息,然后实现了广度优先搜索算法。在`main`函数中读取输入并调用`shortestPath`函数,最后输出最小步数。 请注意,这个示例假设输入的数据是有效的,没有检查边界条件和错误输入的情况。在实际应用中,你需要添加适当的错误检查和异常处理。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值