C++STL序列式容器——list容器及其常用操作(详解)
纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。
💬文章目录
- 一.list容器基本概念
- 二.list容器的常用操作
- list构造函数
- list迭代器获取
- list特性操作
- list元素操作
- list赋值操作
- list的交换、反转、排序、归并操作
- list比较操作
- list插入和删除操作
一.list容器基本概念
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针链接次序实现的。链表由一系列结点(链表中每一个元素称为结点)组成,结点可以在运行时动态生成。
每个结点包括两个部分:
- 一个是存储数据元素的数据域。
- 另一个是存储下一个结点地址的指针域。
list容器的数据结构是一个有头双向循环链表。链表其优缺点为:
- 采用动态存储分配,不会造成内存浪费和溢出
- 链表执行插入和删除操作十分方便,修改指针即可,不需要移动大量元素
- 链表灵活,但是空间和时间额外耗费较大
list容器的迭代器:
list容器不能像vector一样以普通指针作为迭代器,因为其节点不能保证在同一块连续的内存空间上。list迭代器必须有能力指向list的节点,并有能力进行正确的递增、递减、取值、成员存取操作。所谓”list正确的递增,递减、取值、成员取用”是指,递增时指向下一个节点,递减时指向上一个节点,取值时取的是节点的数据值,成员取用时取的是节点的成员。由于list还是一个双向链表,迭代器必须能够具备前移、后移的能力,所以list容器提供的是双向迭代器(Bidirectional Iterators).
二.list容器的常用操作
list构造函数
注:使用list容器时,需包含头文件#include <list>
函数原型 | 解释 |
---|---|
list <T> lst; | list采用模板实现类实现(显示实例化),对象的默认构造形式。 |
list(beg,end); | 构造函数将[beg, end)区间中的元素拷贝给本身。 |
list(n,elem); | 构造函数将n个elem拷贝给本身。 |
list(const list &lst); | 拷贝构造函数。 |
实例:构造函数演示
#include <iostream>
using namespace std;
#include <list>//包含头文件
void printList(const list<int>& mylist)//形参使用const,避免被修改
{//const_iterator只读迭代器for (list<int>::const_iterator it = mylist.begin(); it != mylist.end(); ++it){cout << *it << " ";}cout << endl;
}
void test()
{list<char> mylist1;//list采用模板实现类实现(显示实例化),对象的默认构造形式。list<int> mylist2(10, 6); //构造函数将n个elem拷贝给本身。list<int> mylist3(++mylist2.begin(), --mylist2.end());//构造函数将[beg, end)区间中的元素拷贝给本身。list<int> mylist4(mylist2);//拷贝构造函数printList(mylist2);printList(mylist3);printList(mylist4);
}
int main()
{test();return 0;
}
list迭代器获取
函数原型 | 解释 |
---|---|
iterator begin(); | 返回指向开始位置的迭代器,iterator是正向迭代器。只能使用++运算符从左向右遍历容器,每次沿容器向右移动一个元素。 |
const_iterator begin(); | 返回指向开始位置并且为常量的迭代器 |
const_iterator cbegin(); | 返回指向开始并且为常量的迭代器,const_iterator 常正向迭代器。函数作用:配合auto使用。 |
iterator end(); | 返回指向末尾元素的下一个位置的迭代器 |
const_iterator end(); | 返回指向末尾元素的下一个位置并且为常量的迭代器 |
const_iterator cend(); | 返回指向末尾元素的下一个位置的并且为常量的迭代器,函数作用:配合auto使用。 |
reverse_iterator rbegin(); | 返回反向迭代器,指向末尾元素下一个位置,操作都是往相反反向,reverse_iterator 为反向迭代器。 |
const_reverse_iterator crbegin(); | 返回反向迭代器,指向末尾元素下一个位置,操作都是往相反反向,并且为常量属性,const_reverse_iterator 常反向迭代器。 |
reverse_iterator rend(); | 返回反向迭代器,指向开头元素的位置,操作都是往相反反向 |
const_reverse_iterator cre nd(); | 返回反向迭代器,指向开头元素的位置,操作都是往相反反向,并且为常量属性 |
注意:begin函数和cbegin函数都可以返回const_iterator,那么为什么要两个函数呢?
因为begin函数有重载,无法配合auto(自动推导数据类型)使用,所以才多出一个cbegin函数。
list特性操作
函数原型 | 解释 |
---|---|
size_t size() const; | 返回容器的实际大小(已使用的空间)。 |
bool empty() const; | 判断容器是否为空。 |
void clear(); | 清空容器。 |
void resize(size_t size); | 把容器的实际大小置为size,如果size<实际大小,会截断多出的部分;如果size>实际大小,则以默认值0填充新位置 |
void resize(size_t size,const T &value); | 把容器的实际大小置为size,如果size<实际大小,会截断多出的部分;如果size>实际大小,就用value填充。 |
实例:特性函数演示
#include <iostream>
using namespace std;
#include <list>//包含头文件
void printList(const list<int>& mylist)//形参使用const,避免被修改
{//const_iterator只读迭代器for (list<int>::const_iterator it = mylist.begin(); it != mylist.end(); ++it){cout << *it << " ";}cout << endl;
}
void test()
{list<int> mylist;for (int i = 0; i < 5; i++){mylist.push_back(i + 1);}cout << "size:" << mylist.size() << endl;//5cout << mylist.empty() << endl;//0if (mylist.empty()){cout << "空" << endl;}else{cout << "不为空" << endl;}mylist.resize(3);printList(mylist);//1 2 3mylist.resize(5);//重新指定容器的长度为num,若容器变长,则以默认值填充新位置。printList(mylist);//1 2 3 0 0mylist .resize(10, 6);//如果容器变长,也可以用value填充printList(mylist);//1 2 3 0 0 6 6 6 6 6
}
int main()
{test();return 0;
}
list元素操作
函数原型 | 解释 |
---|---|
T& front(); | 返回第一个元素。 |
T& back(); | 返回最后一个元素。 |
list赋值操作
作用:通过重载赋值运算符operator=和成员函数assign(),给已存在的容器赋值,将覆盖容器中原有的内容。
函数原型 | 解释 |
---|---|
list assign(beg, end); | 将[beg, end)区间中的数据拷贝赋值给本身。 |
void assign(const size_t n, const T& value); | 将n个elem拷贝赋值给本身。 |
list& operator=(const list &lst); | 重载等号操作符,把容器l赋值给当前容器。 |
实例:赋值操作演示
#include <iostream>
using namespace std;
#include <list>//包含头文件
#include<algorithm>
void printList(const list<int>& mylist)//形参使用const,避免被修改
{//const_iterator只读迭代器for (list<int>::const_iterator it = mylist.begin(); it != mylist.end(); ++it){cout << *it << " ";}cout << endl;
}void test()
{list<int> mylist;mylist.assign(10, 10);printList(mylist);list<int> mylist2;mylist2.assign(mylist.begin()++, mylist.end()--);printList(mylist2);cout << mylist.front() << endl;cout << mylist.back() << endl;
}
int main()
{test();return 0;
}
list的交换、反转、排序、归并操作
函数原型 | 解释 |
---|---|
void swap(list<T> &l) ; | 把当前容器与l交换,交换的是链表结点的地址。 |
void reverse(); | 反转链表。 |
void sort(); | 对容器中的元素进行升序排序。 |
void sort(_Pr2 _Pred); | 对容器中的元素进行排序,排序的方法由_Pred决定(二元函数)。 |
void merge(list< T> &l); | 采用归并法合并两个已排序的list容器,合并后的list容器仍是有序的。 |
实例:list的交换、反转、排序、归并操作演示
#include <iostream>
using namespace std;
#include <list>//包含头文件
#include<algorithm>
void printList(const list<int>& mylist)//形参使用const,避免被修改
{//const_iterator只读迭代器for (list<int>::const_iterator it = mylist.begin(); it != mylist.end(); ++it){cout << *it << " ";}cout << endl;
}
bool myfunc2(int v1, int v2)
{return v1 > v2;
}
void test()
{list<int> mylist;for (int i = 0; i < 5; i++){mylist.push_back(i + 10);//10 11 12 13 14}list<int> mylist2;for (int i = 0; i < 5; i++){mylist2.push_back(i);//0 1 2 3 4}mylist2.swap(mylist); //把当前容器mylist2与mylist交换,交换的是链表结点的地址。printList(mylist2);//10 11 12 13 14mylist2.reverse();//反转链表printList(mylist2);//14 13 12 11 10//注意:list容器不能使用sort算法,list容器有自己专属的sort成员函数//sort(mylist.begin(), mylist.end());mylist2.sort(myfunc2);//借助myfunc2函数进行比较,然后sort降序排列printList(mylist2);//14 13 12 11 10mylist2.sort();//mylist2链表使用sort函数默认升序排列printList(mylist2);//10 11 12 13 14mylist.sort();//mylist链表使用sort函数默认升序排列printList(mylist);//0 1 2 3 4 mylist2.merge(mylist); //采用归并法合并两个已排序的list容器,合并后的list容器仍是有序的printList(mylist2); //0 1 2 3 4 10 11 12 13 14}
int main()
{test();return 0;
}
list比较操作
函数原型 | 解释 |
---|---|
bool operator == (const vector<T> & l) const ; | 重载==运算符,判断当前链表与l是否相等 |
bool operator != (const vector<T> & l) const ; | 重载!=运算符,判断当前链表与l是否不相等 |
list插入和删除操作
函数原型 | 解释 |
---|---|
void push_front(const T& ele); | 在容器头部插入一个数据 |
void push_back(const T& ele); | 尾部插入元素ele |
void pop_front(); | 删除容器第一个数据 |
void pop_back(); | 删除最后一个元素 |
iterator insert(iterator pos, const T& value); | 在指定位置插入一个元素,返回指向插入元素的迭代器。 |
iterator insert(pos,n,elem); | 在pos位置插入n个elem数据,返回指向第一个插入元素的迭代器。 |
iterator insert(iterator pos, iterator first, iterator last); | 在指定位置插入一个区间的元素,返回指向第一个插入元素的迭代器。 |
iterator erase(iterator pos); | 删除指定位置的元素,返回下一个有效的迭代器。 |
iterator erase(iterator first, iterator last); | 删除指定区间的元素,返回下一个有效的迭代器。 |
splice(iterator pos, const vector< T> & l); | 把另一个链表连接到当前链表pos位置处。 |
splice(iterator pos, const vector< T> & l, iterator first, iterator last); | 把另一个链表指定的区间连接到当前链表pos位置处。 |
splice(iterator pos, const vector< T> & l, iterator first); | 把另一个链表从first开始的结点连接到当前链表pos位置处。 |
void remove(const T& value); | 删除链表中所有值等于value的元素。 |
void remove_if(_Pr1 _Pred); | 删除链表中满足条件的元素,参数_Pred是一元函数。 |
void unique(); | 删除链表中相邻的重复元素,只保留一个。 |
list插入和删除操作演示:
#include <iostream>
using namespace std;
#include <vector>
#include <list>//包含头文件
void printList(const list<int>& mylist)//形参使用const,避免被修改
{//const_iterator只读迭代器for (list<int>::const_iterator it = mylist.begin(); it != mylist.end(); ++it){cout << *it << " ";}cout << endl;
}
bool myfunc(int val)
{return val > 300;
}
void test()
{list<int> mylist;mylist.push_back(10);//在容器尾部插入一个数据mylist.push_back(20);mylist.push_back(30);mylist.push_back(40);mylist.push_back(50);mylist.push_front(100);//在容器头部插入一个数据mylist.push_front(200);mylist.push_front(300);mylist.push_front(400);printList(mylist);//400 300 200 100 10 20 30 40 50cout << "------------------" << endl;list<int>::const_iterator it = mylist.insert(mylist.begin(), 2, 0);//在pos位置插入n个elem数据cout << *it << endl;//返回指向第一个插入元素的迭代器。cout << "------------------" << endl;vector<int> v;v.push_back(1000);v.push_back(2000);v.push_back(3000);mylist.insert(mylist.begin(), v.begin(), v.end()); //在指定位置插入一个区间的元素,返回指向第一个插入元素的迭代器printList(mylist);//1000 2000 3000 400 300 200 100 10 20 30 40 50cout << "------------------" << endl;mylist.erase(mylist.begin());//删除第一个元素printList(mylist); //2000 3000 400 300 200 100 10 20 30 40 50cout << "------------------" << endl;list<int> mylist2(6,6);mylist.splice(mylist.end(),mylist2);//将mylist2链接到mylist后printList(mylist);//2000 3000 400 300 200 100 10 20 30 40 50 6 6 6 6 6 6cout << "------------------" << endl;mylist.remove(300); //删除链表中所有值等于300的元素printList(mylist);//2000 3000 400 200 100 10 20 30 40 50 6 6 6 6 6 6cout << "------------------" << endl;mylist.remove_if(myfunc);//删除链表中所有值大于300的元素printList(mylist);// 200 100 10 20 30 40 50 6 6 6 6 6 6cout << "------------------" << endl;
}
int main()
{test();return 0;
}
相关文章:
![](https://img-blog.csdnimg.cn/ddb09a56858b4da6beecded65e5537e2.png)
C++STL序列式容器——list容器及其常用操作(详解)
纵有疾风起,人生不言弃。本文篇幅较长,如有错误请不吝赐教,感谢支持。 💬文章目录 一.list容器基本概念二.list容器的常用操作list构造函数list迭代器获取list特性操作list元素操作list赋值操作list的交换、反转、排序、归并操作…...
![](https://img-blog.csdnimg.cn/72178b50eab84c699ff3566e4609e3f4.gif#pic_center)
【雕爷学编程】MicroPython动手做(15)——掌控板之AB按键2
知识点:什么是掌控板? 掌控板是一块普及STEAM创客教育、人工智能教育、机器人编程教育的开源智能硬件。它集成ESP-32高性能双核芯片,支持WiFi和蓝牙双模通信,可作为物联网节点,实现物联网应用。同时掌控板上集成了OLED…...
![](https://img-blog.csdnimg.cn/img_convert/5ba02c2591024aec814439044b9d0251.png)
Spring Boot中整合MyBatis(基于xml方式基于注解实现方式)
一、前提准备 在Spring Boot中整合MyBatis时,你需要导入JDBC(不需要手动添加)和Druid的相关依赖。 JDBC依赖:在Spring Boot中整合MyBatis时,并不需要显式地添加JDBC的包依赖。这是因为,当你添加mybatis-sp…...
![](https://img-blog.csdnimg.cn/2370dfb913134338b41e0834a29cc714.png)
ChatGPT漫谈(三)
AIGC(AI Generated Content)指的是使用人工智能技术生成的内容,包括文字、图像、视频等多种形式。通过机器学习、深度学习等技术,AI系统可以学习和模仿人类的创作风格和思维模式,自动生成大量高质量的内容。AIGC被视为继用户生成内容(UGC)和专业生成内容(PGC)之后的下…...
![](https://img-blog.csdnimg.cn/7b70acf060b64500b4585abe67eaaf7f.png#pic_center)
树、二叉树(C语言版)详解
🍕博客主页:️自信不孤单 🍬文章专栏:数据结构与算法 🍚代码仓库:破浪晓梦 🍭欢迎关注:欢迎大家点赞收藏关注 文章目录 🍊树的概念及结构1. 树的概念2. 树的相关概念3.树…...
![](https://img-blog.csdnimg.cn/98424efd19a14d76a3b25c33dcd834b3.png)
vue中Cascader 级联选择器实现-修改实现
vue 的cascader研究了好长时间,看了官网给的示例,上网查找了好多信息,才解决修改时回显的问题,现将方法总结如下: vue代码: <el-form-item label"芯片" prop"firmware"> <…...
![](https://img-blog.csdnimg.cn/bcb2e9957d7340bca150a7d53f01f07a.png)
C语言实现三子棋游戏
test.c源文件 - 三子棋游戏测试 game.h头文件 - 三子棋游戏函数的声明 game.c源文件 - 三子棋游戏函数的实现 主函数源文件: #define _CRT_SECURE_NO_WARNINGS 1#include"game.h" //自己定义的用"" void menu() {printf("*************…...
![](https://img-blog.csdnimg.cn/e627948a5e3e414bb882a6521f3354b0.png)
机器学习深度学习——softmax回归从零开始实现
👨🎓作者简介:一位即将上大四,正专攻机器学习的保研er 🌌上期文章:机器学习&&深度学习——向量求导问题 📚订阅专栏:机器学习&&深度学习 希望文章对你们有所帮助 …...
![](https://img-blog.csdnimg.cn/d77b6a5ae91a4701aaff36055f039696.png)
Windows如何安装Django及如何创建项目
目录 1、Windows安装Django--pip命令行 2、创建项目 2.1、终端创建项目 2.2、在Pycharm中创建项目 2.3、二者创建的项目有何不同 2.4、项目目录说明 1、Windows安装Django--pip命令行 安装Django有两种方式: pip命令行【推荐--简单】手动安装【稍微复杂一丢丢…...
![](https://www.ngui.cc/images/no-images.jpg)
在CSDN学Golang云原生(监控解决方案Prometheus)
一,记录规则配置 在golang云原生中,通常使用日志库记录应用程序的日志。其中比较常见的有logrus、zap等日志库。这些库一般支持自定义的输出格式和级别,可以根据需要进行配置。 对于云原生应用程序,我们通常会采用容器化技术将其…...
![](https://img-blog.csdnimg.cn/8542585286e24ee5a54edac19c04e964.png)
双重for循环优化
项目中有段代码逻辑是个双重for循环,发现数据量大的时候,直接导致数据接口响应超时,这里记录下不断优化的过程,算是抛砖引玉吧~ Talk is cheap,show me your code! 双重for循环优化 1、数据准备2、原始双重for循环3、…...
![](https://img-blog.csdnimg.cn/ebb3587fd92c4269afd99f67c8d526fe.jpeg)
golang利用go mod巧妙替换使用本地项目的包
问题 拉了两个项目下来,其中一个项目依赖另一个项目,因为改动了被依赖的项目,想重新导入测试一下。 解决办法 go.mod文件的require中想要被代替的包名在replace中进行一个替换,注意:用来替换的需要用绝对路径…...
![](https://www.ngui.cc/images/no-images.jpg)
使用 docker 一键部署 MySQL
目录 1. 前期准备 2. 导入镜像 3. 创建部署脚本文件 4. MySQL 服务器配置文件模板 5. 执行脚本创建容器 6. 后续工作 7. 基本维护 1. 前期准备 新部署前可以从仓库(repository)下载 MySQL 镜像,或者从已有部署中的镜像生成文件&#x…...
![](https://img-blog.csdnimg.cn/a04b70f1bc0248c19867d01e217dabf4.png)
MyBatis-Plus 查询PostgreSQL数据库jsonb类型保持原格式
文章目录 前言数据库问题背景后端返回实体对象前端 实现后端返回List<Map<String, Object>>前端 前言 在这篇文章,我们保存了数据库的jsonb类型:MyBatis-Plus 实现PostgreSQL数据库jsonb类型的保存与查询 这篇文章介绍了模糊查询json/json…...
![](https://img-blog.csdnimg.cn/177d2fb03a694d6a81d7bce233096680.png)
Linux操作系统1-命令篇
不同领域的主流操作系统 桌面操作系统 Windos Mac os Linux服务器操作系统 Unix Linux(免费、稳定、占有率高) Windows Server移动设备操作系统 Android(基于Linux,开源) ios嵌入式操作系统 Linux(机顶盒、路由器、交换机) Linux 特点:免费、开源、多用户、多任务…...
![](https://img-blog.csdnimg.cn/5de776b5bfd94d7dba7c9b54e40b2fa0.png)
opencv-24 图像几何变换03-仿射-cv2.warpAffine()
什么是仿射? 仿射变换是指图像可以通过一系列的几何变换来实现平移、旋转等多种操作。该变换能够 保持图像的平直性和平行性。平直性是指图像经过仿射变换后,直线仍然是直线;平行性是指 图像在完成仿射变换后,平行线仍然是平行线。…...
![](https://www.ngui.cc/images/no-images.jpg)
前端常用的条件限制方法小笔记
手机号的正则表达式(以1开头的11位数字) function checkPhone(){ var phone document.getElementById(phone).value;if(!(/^1[3456789]\d{9}$/.test(phone))){ alert("手机号码有误,请重填"); return false; } }限制输入大于0且最小值要小于最大值 c…...
![](https://www.ngui.cc/images/no-images.jpg)
【LeetCode 算法】Minimum Operations to Halve Array Sum 将数组和减半的最少操作次数-Greedy
文章目录 Minimum Operations to Halve Array Sum 将数组和减半的最少操作次数问题描述:分析代码TLE优先队列 Tag Minimum Operations to Halve Array Sum 将数组和减半的最少操作次数 问题描述: 给你一个正整数数组 nums 。每一次操作中,你…...
![](https://img-blog.csdnimg.cn/06f30fa33c174ee5bc05bffd3d5253ae.png)
Doc as Code (3):业内人士的观点
作者 | Anne-Sophie Lardet 在技术传播国际会议十周年之际,Fluid Topics 的认证技术传播者和功能顾问 Gaspard上台探讨了“docOps 作为实现Doc as Code的中间结构”的概念。在他的演讲中,观众提出了几个问题,我们想分享Gaspard的见解&#x…...
![](https://img-blog.csdnimg.cn/3761e580c3944898bb68d0316b1f62b3.png)
【Kafka】消息队列Kafka基础
目录 消息队列简介消息队列的应用场景异步处理系统解耦流量削峰日志处理 消息队列的两种模式点对点模式发布订阅模式 Kafka简介及应用场景Kafka比较其他MQ的优势Kafka目录结构搭建Kafka集群编写Kafka一键启动/关闭脚本 Kafka基础操作创建topic生产消息到Kafka从Kafka消费消息使…...
![](https://img-blog.csdnimg.cn/74d40cccfe434ef5b9cb40336ff8a57f.png)
Java的第十五篇文章——网络编程(后期再学一遍)
目录 学习目的 1. 对象的序列化 1.1 ObjectOutputStream 对象的序列化 1.2 ObjectInputStream 对象的反序列化 2. 软件结构 2.1 网络通信协议 2.1.1 TCP/IP协议参考模型 2.1.2 TCP与UDP协议 2.2 网络编程三要素 2.3 端口号 3. InetAddress类 4. Socket 5. TCP网络…...
![](https://img-blog.csdnimg.cn/f96ebf5b0eba4f949505f2d1352d9bd7.png)
【深度学习】High-Resolution Image Synthesis with Latent Diffusion Models,论文
13 Apr 2022 论文:https://arxiv.org/abs/2112.10752 代码:https://github.com/CompVis/latent-diffusion 文章目录 PS基本概念运作原理 AbstractIntroductionRelated WorkMethodPerceptual Image CompressionLatent Diffusion Models Conditioning Mec…...
![](https://img-blog.csdnimg.cn/9ff98de6d54f4e95acd58e1fe64490ca.png)
前端学习——Vue (Day6)
路由进阶 路由的封装抽离 //main.jsimport Vue from vue import App from ./App.vue import router from ./router/index// 路由的使用步骤 5 2 // 5个基础步骤 // 1. 下载 v3.6.5 // 2. 引入 // 3. 安装注册 Vue.use(Vue插件) // 4. 创建路由对象 // 5. 注入到new Vue中&…...
![](https://img-blog.csdnimg.cn/8f94b216eb72470786515c4d8761b393.png)
STM32MP157驱动开发——按键驱动(tasklet)
文章目录 “tasklet”机制:内核函数定义 tasklet使能/ 禁止 tasklet调度 tasklet删除 tasklet tasklet软中断方式的按键驱动程序(stm32mp157)tasklet使用方法:button_test.cgpio_key_drv.cMakefile修改设备树文件编译测试 “tasklet”机制: …...
![](https://img-blog.csdnimg.cn/4a15d70742744b43978702a54601035c.png)
PostgreSQL构建时间
– PostgreSQL构建时间 select make_timestamp(2023,7,27,7,34,16);...
![](https://img-blog.csdnimg.cn/96a21ccdd56e4816b39b85abe8716810.png)
2023-将jar包上传至阿里云maven私有仓库(云效制品仓库)
一、背景介绍 如果要将平时积累的代码工具jar包,上传至云端,方便团队大家一起使用,一般的方式就是上传到Maven中心仓库(但是这种方式步骤多,麻烦,而且上传之后审核时间比较长,还不太容易通过&a…...
![](https://img-blog.csdnimg.cn/6a0c9832919e4a7794f76f45036f119b.png)
嵌入式linux之OLED显示屏SPI驱动实现(SH1106,ssd1306)
周日业余时间太无聊,又不喜欢玩游戏,大家的兴趣爱好都是啥?我觉得敲代码也是一种兴趣爱好。正巧手边有一块儿0.96寸的OLED显示屏,一直在吃灰,何不把玩一把?于是说干就干,最后在我的imax6ul的lin…...
![](https://img-blog.csdnimg.cn/a1c8c1ab19524264a2c8bfb2bcf296d7.png)
关于element ui 安装失败的问题解决方法、查看是否安装成功及如何引入
Vue2引入 执行npm i element-ui -S报错 原因:npm版本太高 报错信息: 解决办法: 使用命令: npm install --legacy-peer-deps element-ui --save 引入: 在main.js文件中引入 //引入Vue import Vue from vue; //引入…...
![](https://img-blog.csdnimg.cn/9c927a2109b043ce9f0ca2a0ea16fd74.jpeg)
Selenium多浏览器处理
Python 版本 #导入依赖 import os from selenium import webdriverdef test_browser():#使用os模块的getenv方法来获取声明环境变量browserbrowser os.getenv("browser").lower()#判断browser的值if browser "headless":driver webdriver.PhantomJS()e…...
![](https://img-blog.csdnimg.cn/2d31d628a4c548139dac8dbd888402aa.jpeg#pic_center)
浅谈 AI 大模型的崛起与未来展望:马斯克的 xAI 与中国产业发展
文章目录 💬话题📋前言🎯AI 大模型的崛起🎯中国 AI 产业的进展与挑战🎯AI 大模型的未来展望🧩补充 📝最后 💬话题 北京时间 7 月 13 日凌晨,马斯克在 Twiiter 上宣布&am…...
![](https://img-blog.csdnimg.cn/img_convert/5932f941e2f7fbd5d8700d820310ac83.png)
微信网站模板/百度移动端模拟点击排名
转行java和Web前端学哪个好?其实二者并没有好与坏之分,选择web前端还是Java主要看自己的兴趣爱好,以及技术倾向,不管是前端还是后端,都是高薪职业,都很有发展前景。 对于Java而言,JavaSE、Javaw…...
![](/images/no-images.jpg)
乐山市城乡规划建设局网站/济南seo优化公司助力网站腾飞
$http.post()比get方式多的一个参数为发送给后台的值,其他解释参照上一篇关于get方式解析,格式如下: <!DOCTYPE html> <html> <head lang"en"><meta charset"UTF-8"><title></title>…...
![](/images/no-images.jpg)
网站支付页面怎么做的/站长工具域名查询ip
在接收文件方面请仔细查看,IrDAClient().GetStream 返回Stream对象,他和TcpLister、TcpClient 的返回不一样,要特别注意。.NET Compact Framework 为设备之间的红外线通信提供类。此示例演示了如何使用红外线通信在设备之间发送和接收文件。您…...
![](https://img-blog.csdnimg.cn/img_convert/a3e4913e9cd11bd95bd1282b36a2b935.png)
做网站配置好了找不到服务器/长沙seo网络营销推广
简单是可靠的前提条件真正程序员从来不写代码的注释,如果代码非常难写,那么同样代码的注释也会非常难懂 看看当前计算机程序糟糕的事态,软件开发明显一直是一门妖术,其仍然不能被称为一个工程学。–比尔.克林顿 美国前总统...
![](https://static.leiphone.com/uploads/new/article/740_740/201701/5875bf9c1a972.png?imageMogr2/format/jpg/quality/90)
网页动画/太原百度快速优化排名
现在,我们可以开始建立我们的模型啦。实际上数值计算都是由TensorFlow来完成,它使用了一个快速并高效的C后台程序。TensorFlow希望避免频繁地在Python和C之间切换,因为那样会降低计算速度。一般的工作流程是,首先为了定义所有的运…...
![](http://pcx55bat1.bkt.clouddn.com/avro1.png)
聊天网站备案/网站关键词优化怎么弄
Apache Avro 是一个独立于编程语言的数据序列化系统。旨在解决Hadoop中Writable类型的不足:缺乏语言的可移植性。Avro 模式通常用json来写,数据通常采用二进制格式编码。 Avro的使用 Avro 的使用可以分为两种:编译Schema和非编译Schema 编译S…...