C++基本概念笔记02

4.左值和右值引用在模板编程中起什么作用?

答:移动语义、完美转发、改善性能、元编程(编译器可以根据不同的参数类型生成不同的代码路径)。
5.STL库迭代器失效场景?

答:1)插入和删除操作: 当你向容器中插入或删除元素时,可能会导致迭代器失效。这是因为插入或删除操作可能会导致容器重新分配内存或移动元素,从而使之前的迭代器无效。

       2) 使用 vector 的push_back() 和 resize():当使用 std::vector 的 push_back() 方法添加元素时,如果vector 的大小已经达到容量(capacity),可能会导致重新分配内存,从而使所有迭代器失效; 使用 resize() 方法也可能导致迭代器失效,因为它可能会改变 vector 的大小,需要重新分配内存

       3)使用 std::list 的 splice():当使用 std::list 的 splice() 方法将元素从一个位置移动到另一个位置时,迭代器可能会失效,因为元素的位置发生了变化。

       4) 使用 std::map 和 std::set 的插入操作: 在 std::map 和 std::set 中,插入元素可能会导致树结构的重新平衡,这可能会导致迭代器失效。

      5)在循环中擅自删除元素如果在循环中删除容器中的元素,而没有更新迭代器,那么删除一个元素后,迭代器将失效,可能导致未定义的行为。

解决方式:1.使用合适的迭代器类型、2.控制迭代器范围3.使用关联容器的erase()返回值(在关联容器中使用erase()方法时,它会返回一个指向下一个有效元素的迭代器,可以使用这个迭代器来继续迭代)、更新迭代器。

8.修改动态链接库什么样的代码,既需要编译动态链接库自身,也需要编译可执行文件?

答:修改动态链接库的源代码->重新编译动态链接库->重新编译可执行文件->链接到新的库版本->测试。
 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值