小白大牛漫话c++
文章平均质量分 85
五百五。
大连交通大学软件工程研究生在读,深度学习和c++开发学习中,欢迎评论交流
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
学会吊打面试官之容器终篇priority_queue
在插入元素时,会将元素放在底层容器的末尾,然后进行上浮操作,将元素与其父节点比较,如果比父节点大,则将其与父节点交换位置,直到满足堆的条件为止。在弹出元素时,会将堆顶元素与底层容器的末尾元素交换位置,然后进行下沉操作,将元素与其子节点比较,如果比子节点小,则将其与子节点交换位置,直到满足堆的条件为止。它们的插入、查找和删除操作的时间复杂度都是 O(1),但是在遍历容器时,元素的顺序是不确定的。原创 2023-04-09 00:30:00 · 1382 阅读 · 0 评论 -
学会吊打面试官之underedmap
在链表法中,哈希表的每个位置不再存储一个单独的键值对,而是存储一个链表,所有哈希值相同的键值对都存储在这个链表中。我们可以将每个单词作为键,出现次数作为值,然后遍历整个文本,将单词插入到unordered_map中,如果这个单词已经在unordered_map中存在,就将对应的值加1,否则插入一个新的键值对。而且,unordered_map的元素不是按照插入的顺序排列的,而是按照哈希值排列的。大牛:unordered_map是一个无序的关联式容器,也就是一种键值对的存储结构,其中的元素没有固定的顺序。原创 2023-04-08 00:30:00 · 1958 阅读 · 1 评论 -
学会吊打面试官之map
另外,你也可以使用find函数来查找一个键,如果存在,那么find函数返回一个指向该键值对的迭代器,否则返回map的end迭代器。大牛:当然可以啊,map是一种非常常用的关联式容器,它的底层实现是基于红黑树的,用于存储键-值对(key-value pair)。小白:大牛,我最近学习了一些C++的STL容器,但是我还是有一些疑惑,特别是对于map,我不太理解它的底层实现和具体用法。这个代码定义了一个名为student_scores的map对象,它的键的类型是std::string,值的类型是int。原创 2023-04-07 00:30:00 · 1142 阅读 · 0 评论 -
学会吊打面试官之set
对于平衡二叉树实现的set,查找、插入和删除的时间复杂度都是O(log n),而哈希表实现的set,这些操作的时间复杂度通常是O(1)。大牛:数组和向量都是顺序容器,允许有重复元素,而set则是关联式容器,它的内部实现是基于红黑树的,因此在插入、删除元素时都有比较高的效率。大牛:set和map都是关联容器,但是set中存储的是一组不重复的元素,而map则是键值对的集合,每个键值对都是独一无二的。大牛:是的,set和其他STL容器一样,提供了丰富的操作和算法,可以让我们更加方便地处理数据。原创 2023-04-06 00:30:00 · 1397 阅读 · 1 评论 -
学会吊打面试官之deque
vector是一段连续的内存空间,当空间不足时需要重新分配内存并拷贝数据,而deque则是由多个内存块组成的,每个内存块都是一段连续的内存空间,当需要扩容时,只需要分配新的内存块,并将其链接到原来的内存块上,不需要拷贝数据,因此在一些场景下,deque的性能比vector更好。大牛:是的,deque是由多个小的数组组成的,称为缓冲区。这样,当在deque的中间插入或删除元素时,只需要重新分配一个新的缓冲区,并把指针连接起来即可,而不需要像vector那样重新分配整个数组,或者像list那样重新连接节点。原创 2023-04-05 00:15:00 · 1219 阅读 · 0 评论 -
学会吊打面试官之list
因此,在使用list容器时,需要根据具体情况选择合适的容器类型。同时,list容器还能够很好地处理大量数据的读写操作,因为它的内部实现是通过双向链表来实现的,所以在插入和删除操作时,它的效率比较高。在删除元素时,list容器会找到要删除的节点,更新前一个节点的指针,将其指向下一个节点,同时更新下一个节点的指针,将其指向前一个节点,然后释放要删除的节点。具体地说,在插入元素时,list容器会创建一个新节点,并将其指针链接到前一个节点和后一个节点上,同时更新前一个节点和后一个节点的指针,将其指向新节点。原创 2023-04-04 00:30:00 · 1856 阅读 · 0 评论 -
学会吊打面试官之vector
当vector需要扩容时,它会分配一块更大的内存,将原有的元素复制到新内存中,并释放原有的内存。当vector需要扩容时,它会分配一块更大的内存,将原有的元素复制到新内存中,并释放原有的内存。这些操作方法是用迭代器实现的,迭代器是一种指向容器中元素的对象,可以遍历容器中的元素,进行各种操作。由于vector的元素是连续存储的,当需要在中间或开头添加或删除元素时,需要移动其他元素,效率较低。当元素数量超出vector当前容量时,vector会自动扩容,而且扩容后的元素会连续存储在一起,避免了内存碎片的产生。原创 2023-04-03 00:30:00 · 1339 阅读 · 0 评论
分享