当前位置: 首页 > wzjs >正文

建设网站小常识做网站用到什么技术

建设网站小常识,做网站用到什么技术,深圳软件公司排行,手机怎么制作网站教程视频教程一、std::forward_list (1) forward_list与其适用场景 std::forward_list 是 C的STL中的单向链表(Singly Linked List),它相比 std::list(双向链表)更轻量,适用于仅需要单向遍历的场景。 主要特点&#…

一、std::forward_list

(1) forward_list与其适用场景

std::forward_list 是 C++的STL中的单向链表(Singly Linked List),它相比 std::list(双向链表)更轻量,适用于仅需要单向遍历的场景。

主要特点:

  • 单向链表:只能向前遍历,不支持双向迭代。
  • 低内存开销:比 std::list 占用更少的内存(少一个指针)。
  • 适合频繁插入和删除:由于其链表结构,插入和删除操作比 std::vector 高效(避免了数据移动)。
  • 不支持随机访问:不像 std::vector,无法使用 operator[]at() 访问元素。

适用场景:

  • 仅需单向遍历的数据结构
  • 频繁头部插入/删除的场景(push_front()pop_front() 高效),如队列、哈希链表、日志存储等。
  • 内存敏感的应用(比 std::list 更节省空间)

头文件:

#include <forward_list>

(2) forward_list vs list

特性forward_listlist
结构单向链表双向链表
内存开销较小(少一个指针)较大
遍历方向只能向前支持双向
访问效率O(n) 线性O(n) 线性
插入/删除O(1) 头部操作最优O(1) 任意位置操作
适用场景轻量级、只需单向遍历的链表需要双向遍历的场景

二、forward_list 的常用函数

函数作用
push_front(value)在头部插入元素
pop_front()移除头部元素
insert_after(it, value)it 之后插入 value
erase_after(it)删除 it 之后的元素
remove(value)删除所有值等于 value 的元素
remove_if(pred)删除满足pred条件的元素
front()返回链表头部元素
empty()判断链表是否为空
clear()清空所有元素
swap(other_list)交换两个链表的内容
sort()排序(仅支持升序)
merge(other_list)合并两个有序列表
reverse()反转链表
unique()删除相邻的重复元素

注意:
std::forward_list不提供返回其大小的函数

三、forward_list的基本使用

(1) 创建 forward_list

示例:

#include <iostream>
using namespace std;
#include <forward_list>int main() {forward_list<int> fl1 = { 1, 2, 3, 4, 5 };  // 列表初始化forward_list<int> fl2(5, 10);  // 5 个 10for (int num : fl1){cout << num << " ";} cout << endl;for (int num : fl2){cout << num << " ";}cout << endl;system("pause");return 0;
}

(2) 插入元素

示例:

#include <iostream>
using namespace std;
#include <forward_list>int main() {forward_list<int> fl = { 10, 20, 30 };fl.push_front(5);  // 在头部插入 5auto it = fl.begin();fl.insert_after(it, 15);  // 在 10 之后插入 15cout << "After insertions: ";for (int num : fl){cout << num << " ";}cout << endl;system("pause");return 0;
}

注意:

  • push_front()(在链表头部插入元素)
  • emplace_front()(在头部插入元素,构造效率更高)
  • insert_after()(在指定位置后插入)
  • emplace_after()(在指定位置后插入)

(3) 删除元素

示例:

#include <iostream>
using namespace std;
#include <forward_list>int main() {forward_list<int> fl = {10, 20, 30, 40, 50};fl.pop_front();  // 删除头部元素 10fl.remove(30);   // 删除所有值等于 30 的元素cout << "After deletions: ";for (int num : fl){cout << num << " ";}cout << endl;system("pause");return 0;
}

(4) 反转、排序

示例:

#include <iostream>
using namespace std;
#include <forward_list>int main() {forward_list<int> fl = { 50, 10, 40, 30, 20 };fl.sort();  // 排序fl.reverse();  // 反转cout << "Sorted and Reversed List: ";for (int num : fl){cout << num << " ";}cout << endl;system("pause");return 0;
}

注意:

  • sort() 默认为升序排列,再执行reverse()后为逆序排列;

四、forward_list 的应用

(1)维护一个日志记录系统

要求:

  • 每次新的日志添加到前面(头部插入)。
  • 只保留最近 N 条日志。

示例:

#include <iostream>
using namespace std;
#include <forward_list>
#include <string>#define MAX_LOGS 5  // 最大日志条数class LogSystem {forward_list<string> logs;int size = 0;public:void addLog(const string& log) {logs.push_front(log);  // 头部插入最新日志if (++size > MAX_LOGS){pop_back();  // 超过最大数量时删除最后一条--size;}}void pop_back() {if (logs.empty()) return;auto it = logs.begin();auto prev = logs.before_begin();while (std::next(it) != logs.end()) // 找到倒数第二个元素{ prev = it;++it;}logs.erase_after(prev);  // 删除最后一个元素}void showLogs() {cout << "Recent Logs:" << endl;for (const auto& log : logs){cout << log << endl;}}
};int main() {LogSystem logSys;logSys.addLog("Log 1");logSys.addLog("Log 2");logSys.addLog("Log 3");logSys.addLog("Log 4");logSys.addLog("Log 5");logSys.addLog("Log 6");  // 触发删除最早的 Log 1logSys.showLogs();system("pause");return 0;
}

注意:
std::forward_list不提供pop_back()函数,使用则需要自己编写相应的函数。

http://www.dtcms.com/wzjs/837072.html

相关文章:

  • 影响网站用户体验最好看免费中文
  • 天津微网站深圳网站建设怎么样
  • 营销型网站需要注意wordpress微信群二维码
  • 东莞餐饮网站建设wordpress首页修改无效
  • 金华网站建设工程网站建设oou淘宝客图片wordpress模板
  • 网银网站模板凉州区住房和城乡建设局网站
  • 做的电影网站很卡app拉新工作室
  • 付费网站推广女教师遭网课入侵直播录屏曝光se
  • 淮北做网站的公司有哪些wordpress自带搜索
  • 烟台企业自助建站系统广州旅游网站建设设计公司
  • 山西省三基建设办公室网站视频拍摄收费标准
  • 山东企业建站系统费用wordpress wiki知识库
  • 做网站要学哪些懂做网站怎么赚钱
  • 银川网站公司金融做推广的网站
  • 全屏网站设计技巧iis如何建立网站
  • 揭阳建设网站做网站的怎么赚钱
  • 如何做网站自适应网页制作行为特效视频教程
  • 公司网站建设小江免费制作视频的软件手机版
  • 电商网站开发 参考文献揭阳公司做网站
  • 佛山网站建设团队海淀区城市建设档案馆网站
  • 妇科医院手机网站源码培训班网站建设
  • 上海网站建设索王道下拉关于计算机网站建设的论文
  • 我要招人在哪个网站招百度优化大师
  • error 403 网站拒绝显示做一个网站花多少钱
  • 在青岛做阿里巴巴网站找谁设计人才网站
  • 深圳做英文网站网站备案是备案域名还是空间
  • 上海做网站 公司 哪家好seo 优化一般包括哪些内容
  • 电脑做网站端口映射怎么用链接进自己做的网站
  • 商丘网站建设专业现状100到300万企业所得税
  • 网站后台文章添加成功 不显示毕业设计可以做网站不