STL------map,vector(预习和复习)

本文介绍了C++ STL中的map和vector。map是一个键值对映射容器,通过迭代器访问,支持自动排序。vector则是一个动态数组,能节省空间并避免内存问题,使用push_back和pop_back等操作进行元素管理。文中通过实例讲解了map和vector的基本操作和使用场景。

请全屏阅读哦~

map,翻译为映射。书上都说的不是很通俗(反正我是没看懂),它的作用如下:

对于两个不同类型的变量之间建立一种联系,(就像搭了一座桥),调用的时候用迭代器实现,下面上代码。
map <string, int> mp;//把一个 string 型的 数据映射成 int 型,在这里说可能不是很清楚,看下面的的例题哦~
// mp 是定义 map 数组的经典用名,没有其他别的意思

迭代器:

map <string, int> :: iterator it; // 定义一个 it 的迭代器用来访问 map 中的值
/* 前面就是把你定义时写的那一堆 copy 下来*/

it 它是不可以写成小于或大于的,它只可以判断等于或者不等于迭代器 it 其实就是一个地址,它也可以进行 it++ 或 it-- 等操作。赋初值一般为 :it = mp.begin(); 就是把 it 的初值赋成 mp 的最开始的值。*it 在这里是不支持的,但是可以用 it->first 或者 it->second 来访问 mp 之中的第一个与第二个,在上面那道题中,
it->first 就是访问的 string 型的,而 it->second 就是访问的 int 型的。
举个栗子:

string a;
cin >> a;
map <string, int> :: iterator it;
for (it 
<think> 嗯,用户想基于《C++ Primer》第1-10章内容为应聘网易岗位的小白设计教程。这需要兼顾基础语法网易游戏开发岗的实战需求。 用户提供的引用显示ta重点关注了:Sales_item类的使用(引用3、4)、动态内存(引用2)、容器选择(引用2)流程控制(引用5)。这些恰好是游戏开发的核心知识点。 考虑到网易游戏岗的特性,教程要突出三个维度: 第一维度是基础语法精要。变量类型系统要强调auto类型推导(第2章),因为游戏代码常用类型推断减少冗余。流程控制重点讲范围for循环(第5章),这是现代C++遍历容器的最佳实践。函数部分突出内联constexpr(第6章),这对性能敏感的图形计算很重要。 第二维度是面向对象设计。网易面试常考类设计,所以第7章要详细演示如何封装游戏实体类。引用4中的Sales_item就是很好的案例,可以改写成游戏道具类。继承体系(第15章)虽然超出范围,但需预告多态在游戏开发中的关键作用。 第三维度是内存与STL实战。引用2提到的无序容器必须重点讲,因为游戏里哈希表查询效率远高于map。动态内存管理(第12章)要结合智能指针,用游戏场景案例说明如何避免内存泄漏——比如角色死亡后的资源回收。 特别要注意避坑指南。根据引用5的提示,教程需明确指出do-while在游戏循环中的风险,优先推荐while+状态检查的模式。还要补充网易高频考点:虚函数表原理(尽管在第15章)、RAII在资源管理中的应用等延伸内容。 最后配套的习题要模拟实际开发场景,比如用STL容器实现背包系统、用智能指针管理游戏对象生命周期等。这样能帮助小白在面试中展示实战能力。 </think>以下是为应聘网易C++岗位的小白设计的《C++ Primer》第1-10章精要教程,结合游戏开发常见需求: --- ### **第1部分:C++核心语法(第1-3章)** 1. **开发环境配置** - 安装VS Code或Visual Studio,配置C++17编译环境 - 调试技巧:断点、内存监视(网易笔试题高频考点) ```bash g++ -std=c++17 main.cpp -o game ``` 2. **基础语法精要** - 类型系统:`auto`推导(第2章) ```cpp auto health = 100; // 自动推导为int auto enemyName = "Boss"; // const char* ``` - 范围`for`循环(游戏对象遍历必备) ```cpp for (auto& item : playerInventory) {...} ``` --- ### **第2部分:面向对象编程(第7-8章)** 1. **类设计实战(重点!)** - 封装游戏实体类示例: ```cpp class GameCharacter { public: explicit GameCharacter(std::string name) : name_(std::move(name)), health_(100) {} // 初始化列表 void TakeDamage(int damage) { health_ = (damage >= health_) ? 0 : health_ - damage; } private: std::string name_; int health_; }; ``` - 注意:构造函数`explicit`避免隐式转换(网易代码规范要求) 2. **动态内存管理(第12章延伸)** - 使用智能指针管理游戏资源 ```cpp std::unique_ptr<Texture> LoadTexture(const std::string& path) { return std::make_unique<Texture>(path); } ``` --- ### **第3部分:STL与算法(第9-10章)** 1. **网易高频考点容器** | 容器 | 使用场景 | 游戏开发实例 | |---------------|-------------------------|-------------------------| | `vector` | 动态数组 | 玩家背包物品存储 | | `unordered_map`| 快速查找 | 技能ID到技能对象的映射 | | `deque` | 双端队列 | 游戏事件队列 | 2. **算法实战技巧** - Lambda表达式处理游戏逻辑: ```cpp std::vector<Enemy> enemies; std::sort(enemies.begin(), enemies.end(), [](const Enemy& a, const Enemy& b) { return a.GetThreatLevel() > b.GetThreatLevel(); }); ``` --- ### **第4部分:网易面试专项** 1. **必考知识点** - 虚函数表原理(第15章预习- `const`关键字的深层应用(第7章) - 移动语义(`std::move`)优化性能 2. **项目实操建议** -STL实现简易游戏背包系统 - 基于类继承构建游戏角色体系 ```mermaid classDiagram GameObject <|-- Character GameObject <|-- Item Character <|-- Player Character <|-- NPC ``` --- ### **避坑指南** 1. 避免`using namespace std;`(网易代码规范禁止) 2. 字符串处理优先选`std::string`而非C风格字符串 3. 内存管理:使用`vector`替代原生数组 > 引用说明:类设计示例参考《C++ Primer》第7章[^4],智能指针部分延伸自第12章[^2],容器选择策略参考第11章关联容器[^2]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值