旅游网站源码下载/seo是搜索引擎优化吗

旅游网站源码下载,seo是搜索引擎优化吗,网站安全检测中的安全事件监测包含哪些监控指标,wordpress模板+bridge一、入门 1、vector和list的区别 [C面试] vector 面试点总结 vector 是动态数组,它将元素存储在连续的内存空间中。支持随机访问,即可以通过下标快速访问任意位置的元素,时间复杂度为 O(1),准确点是均摊O(1)。但在中间或开头插…

一、入门

1、vectorlist的区别

[C++面试] vector 面试点总结

vector 是动态数组,它将元素存储在连续的内存空间中。支持随机访问,即可以通过下标快速访问任意位置的元素,时间复杂度为 O(1),准确点是均摊O(1)。但在中间或开头插入、删除元素效率较低,因为需要移动后续元素,时间复杂度为 O(n)。

vector:需要频繁随机访问或尾部操作(如数据缓存、动态数组)

list 是双向链表,元素在内存中不连续存储。不支持随机访问,访问元素需要从头或尾开始遍历,时间复杂度为 O(n)。但在任意位置插入、删除元素效率较高,时间复杂度为 O(1)。

list 需要频繁在任意位置插入/删除(如LRU链表、需要稳定迭代器的场景)

2、setmap的主要用途是什么?

  • set 关联容器,用于存储唯一的元素,并且会对元素进行自动排序(默认按升序)。主要用于需要快速查找元素是否存在的场景,插入、删除和查找操作的时间复杂度均为 O(logn)。
  • map 关联容器,它存储的是键-值对,键是唯一的,并且会根据键进行排序。主要用于需要根据键快速查找对应值的场景,插入、删除和查找操作的时间复杂度同样为 O(logn)。

3、mapset的底层实现是什么?为什么?

  • 底层实现:红黑树(自平衡二叉搜索树)。
  • 原因:红黑树保证插入、删除、查找的时间复杂度为O(log n),且自动维护元素有序性。

如果问你红黑树的细节,你直接回答不了解。如果坚持让你回答,那就是在劝退你,也别浪费时间了

二、进阶

1、deque相对于vectorlist有什么优势,适用于什么场景?

[C++面试] 关于deque-CSDN博客

  • deque 是双端队列,结合了 vector 和 list 的部分优点。它支持随机访问,虽然效率略低于 vector,但也能在O(1) 时间内访问元素。同时,在两端插入和删除元素的效率较高,时间复杂度为 O(1),但中间插入仍需O(n)。
  • 中间插入效率:与vector类似,都需要移动元素,但deque的块结构可能减少部分元素移动,实际性能需具体测试。
  • deque由多个固定大小的数组块(chunk)组成,通过中控器(指针数组)管理。

整体上,deque对于给定的索引,计算出所在的块和块内偏移量并访问元素的操作次数是固定的,不随元素数量的增加而增加,所以其随机访问的时间复杂度仍然是 O(1) ,不过因为多了定位块的操作,效率会略低于 vector

  • 当需要在容器两端频繁插入和删除元素,同时也需要随机访问元素时,deque 是一个不错的选择,例如实现队列或栈。

2、priority_queue的特点是什么,如何使用?

priority_queue 是优先队列,它是一种容器适配器,默认使用 vector 作为底层容器,并且使用大顶堆(最大元素位于堆顶)来实现。它的特点是可以在 \(O(log n)\) 的时间复杂度内插入元素和删除堆顶元素,并且可以在 \(O(1)\) 的时间复杂度内访问堆顶元素。

    std::priority_queue<int> pq;pq.push(3);pq.push(1);pq.push(2);

3、 为什么priority_queue默认用vector而不是deque作为底层容器?

  • 堆操作(如push_heappop_heap)需要随机访问,vector的连续内存访问更高效。
  • deque的复杂内存布局可能导致堆操作性能下降。

4、forward_listlist相比,有什么优缺点,使用时需要注意什么?

  • 优点forward_list 是单向链表,只支持单向遍历,内存开销更小,插入和删除操作的效率也更高,因为只需要维护一个指针。每个节点只有后向指针 。
  • 缺点:不支持反向遍历,访问元素只能从头开始依次向后遍历,并且没有 size() 成员函数,获取元素数量需要手动遍历。
  • 使用注意事项:由于 forward_list 没有 push_back() 方法,只能使用 push_front() 插入元素。在插入和删除元素时,需要注意迭代器的有效性,因为操作可能会使迭代器失效。
  • 场景forward_list:内存敏感场景(如嵌入式系统),且只需单向遍历(如哈希表冲突链表)。list:需要反向操作或双向迭代器(如某些中间节点删除需前驱指针)。

5、stack是容器吗?它的默认底层容器是什么? 

  • stack是容器适配器,不是独立容器。(概念考察)
  • 默认底层容器是deque(支持两端高效操作),也可用vectorlist

三、高阶

1、如何为自定义类型选择容器?例如存储Student对象,需要按学号快速查找。

需求分析(开放题,仅供参考)

  • 若需有序性且频繁查找:用map<int, Student>(学号为键)。
  • 若无需有序性但需更快查找:用unordered_map(哈希表,O(1)查找)。
  • 若需频繁插入/删除且有序性不重要:用vector+排序(或维护有序插入)。

2、vector的迭代器失效场景有哪些?如何避免?

[C++面试] vector 面试点总结-CSDN博客

    • 插入元素导致容量变化(内存重分配):所有迭代器失效。
    • 删除元素:被删位置后的迭代器失效。

    避免方法 

    • 预分配足够容量(reserve)减少重分配。
    • 插入/删除后重新获取迭代器。

    vector<bool>可能是个坑(见上述链接)

    • 标准规定vector<bool>使用位压缩存储,每个元素占1 bit,但行为类似引用而非普通bool
    • 陷阱:不能直接取元素地址,且迭代器行为异常(如无法修改*iter的值)

    3、map::operator[]map::insert的陷阱是什么? 

    3.1、operator[]:若键不存在,会插入一个默认值,可能导致意外内存增长。

    map<string, int> scores = {{"Alice", 90}, {"Bob", 85}};
    // 尝试读取不存在的键 "Charlie"
    int charlie_score = scores["Charlie"];  // 插入 {"Charlie", 0}

    用 find 替代 operator[] 进行安全查找: 

    auto it = scores.find("Charlie");
    if (it != scores.end()) {int charlie_score = it->second;
    } else {// 处理键不存在的情况
    }

    3.2、insert:若键已存在,不会覆盖原有值,而是保留原有值,并返回一个 pair<iterator, bool>,其中 bool 为 false。需用insert_or_assign(C++17)或先find再更新。

    map<string, int> scores = {{"Alice", 90}, {"Bob", 85}};
    // 尝试插入或更新 "Alice" 的分数
    scores.insert({"Alice", 95});  // 插入失败,原有值 90 保留
    // 输出结果
    cout << "Alice's score: " << scores["Alice"] << endl;  // 输出 90
    方法1:insert_or_assign(C++17)​
    • 若键存在,更新值;若不存在,插入新键值对。
    int main() {map<string, int> scores = {{"Alice", 90}, {"Bob", 85}};// 更新 "Alice" 的分数为 95scores.insert_or_assign("Alice", 95);  // 更新成功scores.insert_or_assign("Charlie", 80); // 插入新键值对
    }
    方法2:先 find 再更新
    auto it = scores.find("Alice");
    if (it != scores.end()) {it->second = 95;  // 直接修改迭代器指向的值
    } else {scores.insert({"Alice", 95});
    }
    方法3:operator[] + 赋值
    • 若确定键需要插入或更新,可直接用 operator[]
    scores["Alice"] = 95;  // 无论 "Alice" 是否存在,值都会被设为 95

    实际场景建议

    1. 只读访问:用 find 替代 operator[],避免意外插入。

    2. 需要插入或更新

      • C++17+:优先用 insert_or_assign

      • C++11:用 find 检查是否存在,再决定插入或更新。

    3. 明确需要覆盖:直接使用 operator[] = value

    4、如何高效合并两个有序vector? 

    • 方法1:先insertsort(时间复杂度高,O(n log n))。
    • 方法2:使用std::merge(时间复杂度O(n),需额外空间):
    vector<int> merged;
    merged.reserve(v1.size() + v2.size());
    merge(v1.begin(), v1.end(), v2.begin(), v2.end(), back_inserter(merged));

    总结:

    本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/72622.shtml

    如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

    相关文章

    C# NX二次开发:拉伸UFUN函数避坑指南

    大家好&#xff0c;今天想说一下拉伸相关UFUN函数的使用&#xff0c;尽量让大家别踩坑。 官方给出的拉伸UFUN函数有如下几个&#xff1a; &#xff08;1&#xff09;UF_MODL_create_extruded2 (view source) uf_list_p_tobjectsInputList of objects to be extruded.char *ta…

    基于 Python 爬取 TikTok 搜索数据 Tiktok爬虫(2025.3.17)

    1. 前言 在数据分析和网络爬虫的应用场景中&#xff0c;我们经常需要获取社交媒体平台的数据&#xff0c;例如 TikTok。本篇文章介绍如何使用 Python 爬取 TikTok 用户搜索数据&#xff0c;并解析其返回的数据。 结果截图 2. 项目环境准备 在正式运行代码之前&#xff0c;我…

    关于deepseek R1模型分布式推理效率分析

    1、引言 DeepSeek R1 采用了混合专家&#xff08;Mixture of Experts&#xff0c;MoE&#xff09;架构&#xff0c;包含多个专家子网络&#xff0c;并通过一个门控机制动态地激活最相关的专家来处理特定的任务 。DeepSeek R1 总共有 6710 亿个参数&#xff0c;但在每个前向传播…

    二叉树算法题实战:从遍历到子树判断

    目录 一、引言 二、判断两棵二叉树是否相同 思路 代码实现 注意点 三、二叉树的中序遍历 思路 代码实现 注意点 四、判断一棵树是否为另一棵树的子树 思路 代码实现 注意点 ​编辑 五、补充 一、引言 作者主页&#xff1a;共享家9527-CSDN博客 作者代码仓库&am…

    【开原宝藏】30天学会CSS - DAY1 第一课

    下面提供一个由浅入深、按步骤拆解的示例教程&#xff0c;让你能从零开始&#xff0c;逐步理解并实现带有旋转及悬停动画的社交图标效果。为了更简单明了&#xff0c;以下示例仅创建四个图标&#xff08;Facebook、Twitter、Google、LinkedIn&#xff09;&#xff0c;并在每一步…

    HarmonyOS第22天:解锁鸿蒙服务开发

    走进鸿蒙服务开发的世界 在移动应用开发的领域中&#xff0c;HarmonyOS 以其独特的分布式理念和强大的系统能力&#xff0c;为开发者们开辟了一片崭新的天地。其中&#xff0c;服务开发作为 HarmonyOS 应用开发的关键环节&#xff0c;犹如一把神奇的钥匙&#xff0c;能够帮助开…

    鸿蒙应用程序包HAP的开发与使用

    1、HAP是什么&#xff1f; HAP&#xff08;Harmony Ability Package&#xff09;是应用安装和运行的基本单元。HAP包是由代码、资源、第三方库、配置文件等打包生成的模块包&#xff0c;其主要分为两种类型&#xff1a;entry和feature。 entry&#xff1a;应用的主模块&#x…

    解决qt中自定插件加载失败,不显示问题。

    这个问题断断续续搞了一天多&#xff0c;主要是版本不匹配问题。 我们先来看下 Based on Qt 6.6.0 → 说明 Qt Creator 本身 是基于 Qt 6.6.0 框架构建的。MSVC 2019, 64-bit → 说明 Qt Creator 是使用 Microsoft Visual C 2019 编译器&#xff08;64 位&#xff09; 编译的。…

    进程间通信--匿名管道

    进程间通信介绍 进程间通信目的 数据传输&#xff1a;一个进程需要将它的数据发送给另一个进程资源共享&#xff1a;多个进程之间共享同样的资源。通知事件&#xff1a;一个进程需要向另一个或一组进程发送消息&#xff0c;通知它&#xff08;它们&#xff09;发生了某种事件&…

    CSS块元素、行内元素、行内块元素详解

    一、块元素&#xff08;Block Elements&#xff09; 1.定义与特点 独占一行&#xff1a;默认情况下&#xff0c;块元素会从新的一行开始&#xff0c;并且其后的元素也会被推到下一行。可设置宽高&#xff1a;可以自由设置宽度&#xff08;width&#xff09;和高度&#xff08…

    Word 小黑第22套

    对应大猫23 续编号&#xff08;编号断了&#xff0c;从一开始&#xff09;&#xff1a;点编号&#xff0c;再设置编号值 插入以图标方式显示的文档&#xff1a;插入 -对象 -由文件创建 &#xff08;这里要链接到文件也要勾选 不然扣一分&#xff09; 一个页面设为横向不影响上…

    平面波扬声器 VS球面波扬声器的原理与优缺点对比

    一、核心定义与原理 1、平面波扬声器 1.1、平面波扬声器的定义‌&#xff1a;通过“相控阵”技术控制声波相位&#xff0c;使声波以平行线&#xff08;面&#xff09;定向传播的扬声器&#xff0c;声波近似平面振动&#xff0c;能量集中且衰减缓慢‌。 1.2、平面波扬声器的原…

    设计模式之命令设计模式

    命令设计模式&#xff08;Command Pattern&#xff09; 请求以命令的形式包裹在对象中&#xff0c;并传给调用对象。调用对象寻找可以处理该命令的对象&#xff0c;并把该命令传给相应的对象执行命令&#xff0c;属于行为型模式命令模式是一种特殊的策略模式&#xff0c;体现的…

    力扣hot100二刷——二叉树

    第二次刷题不在idea写代码&#xff0c;而是直接在leetcode网站上写&#xff0c;“逼”自己掌握常用的函数。 标志掌握程度解释办法⭐Fully 完全掌握看到题目就有思路&#xff0c;编程也很流利⭐⭐Basically 基本掌握需要稍作思考&#xff0c;或者看到提示方法后能解答⭐⭐⭐Sl…

    从“自习室令牌”到线程同步:探秘锁与条件变量

    目录 互斥 为什么需要锁 锁的原理--互斥 锁的使用 同步 锁的问题 条件变量 互斥 为什么需要锁 先看结果&#xff1a; 以下代码是我模拟创建线程抢票&#xff0c;由于不加锁导致票抢到了负数 main.cc: #include<vector> #include<iostream> #include"…

    字符串哈希从入门到精通

    一、基本概念 字符串哈希是将任意长度的字符串映射为固定长度的哈希值&#xff08;通常为整数&#xff09;的技术&#xff0c;核心目标是实现O(1)时间的子串快速比较和高效查询。其本质是通过数学运算将字符串转换为唯一性较高的数值&#xff0c;例如&#xff1a; ​​​​​​…

    什么是数学建模?数学建模是将实际问题转化为数学问题

    数学建模是将实际问题转化为数学问题&#xff0c;并通过数学工具进行分析、求解和验证的过程。 一、数学建模的基本流程 问题分析 • 明确目标&#xff1a;确定需要解决的核心问题。 • 简化现实&#xff1a;识别关键变量、忽略次要因素。 • 定义输入和输出&#xff1a;明确模…

    搭建主从服务器

    任务需求 客户端通过访问 www.nihao.com 后&#xff0c;能够通过 dns 域名解析&#xff0c;访问到 nginx 服务中由 nfs 共享的首页文件&#xff0c;内容为&#xff1a;Very good, you have successfully set up the system. 各个主机能够实现时间同步&#xff0c;并且都开启防…

    AlexNet 有哪些首创?

    现在大家每逢讨论人工智能&#xff0c;都离不开深度学习&#xff0c;这轮深度学习的热潮&#xff0c;追根溯源可以到2012年 AlexNet 的横空出世。后来&#xff0c;大家开始发现深度学习越来越强的能力。 AlexNet 的首创贡献 AlexNet&#xff08;2012年&#xff09;作为现代深…

    【Linux我做主】基础命令完全指南上篇

    Linux基础命令完全指南【上篇】 Linux基础命令完全指南github地址前言命令行操作的引入Linux文件系统树形结构的根文件系统绝对路径和相对路径适用场景Linux目录下的隐藏文件 基本指令目录和文件相关1. ls2. cd和pwdcdpwd 3. touch4. mkdir5. cp6. mv移动目录时覆盖写入的两种特…