C++基础(7)——STL简介及string类
目录
1.STL简介
1.1什么是
1.2STL的历史版本
1.3STL的六大组件
编辑
1.4有用的网址
2.string类
2.1string的多种定义方式
2.2string的插入
2.2.1尾插(push_back)
2.2.2insert插入
2.3拼接(append)
2.4删除
2.4.1尾删(pop_back)
2.4.2使用erase删除
2.5string的查找
2.5.1使用find函数正向搜索
2.5.2使用rfind函数反向搜索第一个匹配项
2.6string的比较
2.7string的替换
2.8string的交换
2.9string的大小及容量
2.9.1获取有效字符的个数
2.9.3使用capacity函数获取所分配的空间的大小
2.9.4使用resize改变当前对象的有效字符的个数
2.9.5用reserve改变当前对象容量的大小
2.9.6使用clear删除对象的内容,删除后对象变为空字符串
2.9.7使用empty判断对象是否为空
2.10string中元素的多种访问方式
2.10.1下标
2.10.2使用at访问对象中的元素
2.10.3使用范围for访问对象中的元素
2.10.4使用迭代器访问对象中的元素
2.11string中的运算符
2.11.1=
2.11.2+=
2.11.3+
2.11.4operator>> 和 operator<<
2.11.5relational operators
2.12string中与迭代器相关的函数
2.12.1与正向迭代器相关的函数
2.12.2与反向迭代器相关的函数
2.13string与字符串之间的转换
2.13.1将字符串转换为string
2.13.2使用c_str或data将string转换为字符串
2.14string中子字符串的提取
2.14.1使用substr函数提取string中的子字符串
2.14.3使用copy函数将string的子字符串复制到字符数组中
2.15string中的getline函数
2.15.1用法一:
2.15.2用法二:
1.STL简介
1.1什么是
STL(standard template libaray-标准模板库):是C++标准库的重要组成部分,不仅是一个可复用的组件库,而且是一个包罗数据结构与算法的软件框架。
1.2STL的历史版本
原始版本:
Alexander Stepanov、Meng Lee 在惠普实验室完成的原始版本,本着开源精神,他们声明允许 任何人任意运用、拷贝、修改、传播、商业使用这些代码,无需付费。唯一的条件就是也需要向原 始版本一样做开源使用。 HP版本--所有STL实现版本的始祖。
P. J. 版本:
由P. J. Plauger开发,继承自HP版本,被Windows Visual C++采用,不能公开或修改,缺陷:可读 性比较低,符号命名比较怪异。
RW版本:
由Rouge Wage公司开发,继承自HP版本,被C+ + Builder 采用,不能公开或修改,可读性一 般。
SGI版本:
由Silicon Graphics Computer Systems,Inc公司开发,继承自HP版 本。被GCC(Linux)采用,可 移植性好,可公开、修改甚至贩卖,从命名风格和编程 风格上看,阅读性非常高。我们后面学习
STL要阅读部分源代码,主要参考的就是这个版本。
1.3STL的六大组件
1.4有用的网址
cplusplus.com
2.string类
2.1string的多种定义方式
string(); //构造一个空字符串string(const char* s); //用C-string构造string类string(const char* s, size_t n); //用C-string的前n个字符构造string类string(size_t n, char c); //用n个c字符构造string类string(const string& str); //拷贝构造string(const string& str, size_t pos, size_t len = npos); //用从pos位置开始的长度为len的字串来构造string类
示例:
string s1;
string s2("hello world");
string s3("hello world", 3);
string s4(10, 'a');
string s5(s2);
string s6(s2, 0, 5);
2.2string的插入
2.2.1尾插(push_back)
函数:void push_back (char c);
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s;s.push_back('X');s.push_back('Y');s.push_back('W');s.push_back('L');cout << s << endl; //XYWLreturn 0;
}
2.2.2insert插入
函数:
string& insert (size_t pos, const string& str);//在pos位置插入string对象
string& insert (size_t pos, const char* s);//在pos位置插入字符串str
iterator insert (iterator p, char c);//在pos位置插入字符char
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("X"); //X//insert(pos, string)在pos位置插入string对象string l("Y");s.insert(2, l); //XY//insert(pos, str)在pos位置插入字符串strs.insert(1, "W"); //XYW//insert(pos, char)在pos位置插入字符chars.insert(s.end(), 'L'); //XYWLcout << s << endl; //XYWLreturn 0;
}
2.3拼接(append)
函数:string& append (const string& str);//拼接string对象
string& append (const char* s);//拼接字符串strstring& append (size_t n, char c);拼接字符char
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1("I");string s2(" love");s1.append(s2); //I loves1.append(" HHR"); //I love HHRs1.append(3, '!'); //I love HHR!!!cout << s1 << endl; //I love HHR!!!return 0;
}
2.4删除
2.4.1尾删(pop_back)
函数:void pop_back();
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL");s.pop_back();s.pop_back();s.pop_back();cout << s << endl; //Xreturn 0;
}
2.4.2使用erase删除
函数:string& erase (size_t pos = 0, size_t len = npos);
iterator erase (iterator p);
iterator erase (iterator first, iterator last);
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("I love XYWL!!!");//erase(pos, n)删除pos位置开始的n个字符s.erase(11, 3); //I love XYWL//erase(pos)删除pos位置的字符s.erase(s.end()-1); //I love XYW//erase(pos1, pos2)删除[pos1,pos2)上所有字符s.erase(s.begin() + 1, s.end()); //Icout << s << endl; //Ireturn 0;
}
2.5string的查找
查找分为正向和反向:
2.5.1使用find函数正向搜索
函数:size_t find (const string& str, size_t pos = 0) const;//搜索与string对象所匹配的第一个位置
size_t find (const char* s, size_t pos = 0) cons//搜索与字符串str所匹配的第一个位置
size_t find (char c, size_t pos = 0) const;//搜索与字符char所匹配的第一个位置
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1("https://www.acwing.com/problem/content/submission/1/");string s2("www");size_t pos1 = s1.find(s2);cout << pos1 << endl; //8char str[] = "acwing.com";size_t pos2 = s1.find(str);cout << pos2 << endl; //12size_t pos3 = s1.find(':');cout << pos3 << endl; //5return 0;
}
2.5.2使用rfind函数反向搜索第一个匹配项
函数:size_t rfind (const string& str, size_t pos = npos) const;搜索与string对象所匹配的第一个位置
size_t rfind (const char* s, size_t pos = npos) const;//搜索与字符串str所匹配的第一个位置
size_t rfind (char c, size_t pos = npos) const;//搜索与字符char所匹配的第一个位置
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1("https://www.acwing.com/problem/content/submission/1/");string s2("1");size_t pos1 = s1.rfind(s2);cout << pos1 << endl; //50char str[] = "content";size_t pos2 = s1.rfind(str);cout << pos2 << endl; //31size_t pos3 = s1.rfind('/');cout << pos3 << endl; //51return 0;
}
2.6string的比较
函数:int compare (const string& str) const;//雷同
int compare (size_t pos, size_t len, const string& str) const;//雷同
int compare (size_t pos, size_t len, const string& str, size_t subpos, size_t sublen) const;//雷同
比较规则(同C语言):
1、比较字符串中第一个不匹配的字符值较小,或者所有比较字符都匹配,但比较字符串较短,则返回小于0的值。
2、比较字符串中第一个不匹配的字符值较大,或者所有比较字符都匹配,但比较字符串较长,则返回大于0的值。
3、比较的两个字符串相等,则返回0。总结:括号外的大为1,小-1,同0。
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1("hello world");string s2("hello hhy");//"hello world"和"hello hhy"比较cout << s1.compare(s2) << endl; //1//"ello"和"hello hhy"比较cout << s1.compare(1, 4, s2) << endl; //-1//"hello"和"hello"比较cout << s1.compare(0, 4, s2, 0, 4) << endl; //0return 0;
}
2.7string的替换
函数:string& replace (size_t pos, size_t len, const char* s);//将pos位置开始的len个字符替换为字符串str
string& replace (size_t pos, size_t len, size_t n, char c);将pos位置开始的len个字符替换为n个字符char
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("hello world");s.replace(6, 4, "XTWL"); //hello XYWLd//replace(pos, len, n, char)将pos位置开始的len个字符替换为n个字符chars.replace(10, 1, 1, '!'); //hello XYWL!cout << s << endl;return 0;
}
2.8string的交换
函数:void swap (string& x, string& y);
void swap (string& str);
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1("hello");string s2("world");swap(s1, s2);cout << s1 << endl; //worldcout << s2 << endl; //hellos1.swap(s2);cout << s1 << endl; //hellocout << s2 << endl; //worldreturn 0;
}
2.9string的大小及容量
2.9.1获取有效字符的个数
函数:size_t size() const;
size_t length() const;
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL");cout << s.size() << endl; //4cout << s.length() << endl; //4return 0;
}
2.9.3使用capacity函数获取所分配的空间的大小
函数:size_t capacity() const;
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL);cout << s.capacity() << endl; //15return 0;
}
2.9.4使用resize改变当前对象的有效字符的个数
函数:void resize (size_t n);
void resize (size_t n, char c);
resize规则:
1、当n大于对象当前的size时,将size扩大到n,扩大的字符为c,若c未给出,则默认为’\0’。
2、当n小于对象当前的size时,将size缩小到n。
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1("XYWL");s1.resize(20);cout << s1 << endl; //XYWLcout << s1.size() << endl; //20cout << s1.capacity() << endl; //31string s2("XYWL");s2.resize(20, '0');cout << s2 << endl; //XYWL0000000000000000cout << s2.size() << endl; //20cout << s2.capacity() << endl; //31 string s3("XYWL");s3.resize(2);cout << s3 << endl; //XYcout << s3.size() << endl; //2cout << s3.capacity() << endl; //15return 0;
}
注意: 若给出的n大于当前对象的capacity,则capacity也会随其增长。
2.9.5用reserve改变当前对象容量的大小
函数:void reserve (size_t n = 0);
reserve规则:
1、当n大于对象当前的capacity时,将capacity扩大到n或大于n。
2、当n小于对象当前的capacity时,什么也不做(与resize不同)。
示例:
#define _CRT_SECURE_NO_WARNINGS 1
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL");cout << s << endl; //XYWLcout << s.size() << endl; //4cout << s.capacity() << endl; //15s.reserve(30);cout << s << endl; //XYWLcout << s.size() << endl; //4cout << s.capacity() << endl; //31s.reserve(3);cout << s << endl; //XYWLcout << s.size() << endl; //4cout << s.capacity() << endl; //31return 0;
}
注:此函数对size没任何影响
2.9.6使用clear删除对象的内容,删除后对象变为空字符串
函数:void clear();
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL");//clear()删除对象的内容,该对象将变为空字符串s.clear();cout << s << endl; //空字符串return 0;
}
2.9.7使用empty判断对象是否为空
函数:bool empty() const;
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL");cout << s.empty() << endl; //0s.clear();cout << s.empty() << endl; //1return 0;
}
2.10string中元素的多种访问方式
2.10.1下标
在string中我们可以直接使用[ ]+下标访问对象中的元素。
函数:char& operator[] (size_t pos);
const char& operator[] (size_t pos) const;
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL");//[]+下标访问对象元素for (size_t i = 0; i < s.size(); i++){cout << s[i];}cout << endl;for (size_t i = 0; i < s.size(); i++){s[i] = 'x';}cout << s << endl; //xxxxreturn 0;
}
2.10.2使用at访问对象中的元素
函数:char& at (size_t pos);
const char& at (size_t pos) const;
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL");for (size_t i = 0; i < s.size(); i++){cout << s.at(i);}cout << endl;for (size_t i = 0; i < s.size(); i++){s.at(i) = 'x';}cout << s << endl; //xxxxreturn 0;
}
2.10.3使用范围for访问对象中的元素
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL");for (auto e : s){cout << e;}cout << endl; //XYWLfor (auto& e : s) {e = 'x';}cout << s << endl; //xxxxreturn 0;
}
2.10.4使用迭代器访问对象中的元素
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("XYWL");string::iterator it1 = s.begin();while (it1 != s.end()){cout << *it1;it1++;}cout << endl; //XYWLstring::iterator it2 = s.begin();while (it2 != s.end()){*it2 += 1;it2++;}cout << s << endl; //YZXMreturn 0;
}
2.11string中的运算符
2.11.1=
string类中对=运算符进行了重载,重载后的=运算符支持string类的赋值、字符串的赋值以及字符的赋值。
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1;string s2("XYWL");s1 = s2;cout << s1 << endl; //XYWLs1 = "hello";cout << s1 << endl; //hellos1 = '0';cout << s1 << endl; //0return 0;
}
2.11.2+=
string类中对+=运算符进行了重载,重载后的+=运算符支持string类的复合赋值、字符串的复合赋值以及字符复合的赋值。
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1;string s2("hello");//支持string类的复合赋值s1 += s2;cout << s1 << endl; //hello//支持字符串的复合赋值s1 += " XYWL";cout << s1 << endl; //hello XYWL//支持字符的复合赋值s1 += '!';cout << s1 << endl; //hello XYWL!return 0;
}
2.11.3+
string类中对+运算符进行了重载,重载后的+运算符支持以下几种类型的操作:
string类 + string类
string类 + 字符串
字符串 + string类
string类 + 字符
字符 + string类
它们相加后均返回一个string类对象。
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s;string s1("super");string s2("man");char str[] = "woman";char ch = '!';//string类 + string类s = s1 + s2;cout << s << endl; //superman//string类 + 字符串s = s1 + str;cout << s << endl; //superwoman//字符串 + string类s = str + s1;cout << s << endl; //womansuper//string类 + 字符s = s1 + ch;cout << s << endl; //super!//字符 + string类s = ch + s1;cout << s << endl; //!superreturn 0;
}
2.11.4operator>> 和 operator<<
函数:istream& operator>> (istream& is, string& str);
ostream& operator<< (ostream& os, const string& str);
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s;cin >> s; cout << s << endl; return 0;
}
2.11.5relational operators
string类中还对一系列关系运算符进行了重载,它们分别是==、!=、<、<=、>、>=。
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1("abcd");string s2("abde");cout << (s1 > s2) << endl; //0cout << (s1 < s2) << endl; //1cout << (s1 == s2) << endl; //0return 0;
}
注:比较的是ASCII码
2.12string中与迭代器相关的函数
2.12.1与正向迭代器相关的函数
begin函数:返回一个指向字符串第一个字符的迭代器。
函数:iterator begin();
const_iterator begin() const;
end函数:返回一个指向字符串结束字符的迭代器,即’\0’。
函数:iterator end();
const_iterator end() const;
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("hello string");string::iterator it = s.begin();while (it != s.end()){cout << *it;it++;}cout << endl; //hello stringreturn 0;
}
2.12.2与反向迭代器相关的函数
rbegin函数:返回指向字符串最后一个字符的反向迭代器。
函数:reverse_iterator rbegin();
const_reverse_iterator rbegin() const;
rend函数:返回指向字符串第一个字符前面的理论元素的反向迭代器。
函数:reverse_iterator rend();
const_reverse_iterator rend() const;
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("hello world");string::reverse_iterator rit = s.rbegin();while (rit != s.rend()){cout << *rit;rit++;}cout << endl; //dlrow ollehreturn 0;
}
2.13string与字符串之间的转换
2.13.1将字符串转换为string
#include <iostream>
#include <string>
using namespace std;
int main()
{//方式一string s1("hello world");//方式二char str[] = "hello world";string s2(str);cout << s1 << endl; //hello worldcout << s2 << endl; //hello worldreturn 0;
}
2.13.2使用c_str或data将string转换为字符串
函数:const char* c_str() const;
const char* data() const;
区别:
1.在C++98中,c_str()返回 const char* 类型,返回的字符串会以空字符结尾。
2.在C++98中,data()返回 const char* 类型,返回的字符串不以空字符结尾。
3.但是在C++11版本中,c_str()与data()用法相同。
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("hello world ");const char* str1 = s.data();const char* str2 = s.c_str();cout << str1 << endl;cout << str2 << endl;return 0;
}
2.14string中子字符串的提取
2.14.1使用substr函数提取string中的子字符串
函数:string substr (size_t pos = 0, size_t len = npos) const;
示例:
#include <iostream>
#include <string>
using namespace std;
int main()
{string s1("abcdef");string s2;s2 = s1.substr(2, 4);cout << s2 << endl; //cdefreturn 0;
}
2.14.3使用copy函数将string的子字符串复制到字符数组中
函数:size_t copy (char* s, size_t len, size_t pos = 0) const;
#include <iostream>
#include <string>
using namespace std;
int main()
{string s("abcdef");char str[20];//copy(str, n, pos)复制pos位置开始的n个字符到str字符串size_t length = s.copy(str, 4, 2);//copy函数不会在复制内容的末尾附加'\0',需要手动加str[length] = '\0';cout << str << endl; //dcefreturn 0;
}
2.15string中的getline函数
因为在之前我们知道在读入字符串是时,cin>>当读到空格时就会停止,于是我们有了getline。
2.15.1用法一:
函数:istream& getline (istream& is, string& str);
getline函数将从is中提取到的字符存储到str中,直到读取到换行符’\n’为止。
#include <iostream>
#include <string>
using namespace std;
int main()
{string s;getline(cin, s); //输入:hello CSDNcout << s << endl; //输出:hello CSDNreturn 0;
}
2.15.2用法二:
函数:istream& getline (istream& is, string& str, char delim);
getline函数将从is中提取到的字符存储到str中,直到读取到分隔符delim或换行符’\n’为止。
#include <iostream>
#include <string>
using namespace std;
int main()
{string s;getline(cin, s, 'r'); //输入:hello worldcout << s << endl; //输出:hello woreturn 0;
}
相关文章:
C++基础(7)——STL简介及string类
目录 1.STL简介 1.1什么是 1.2STL的历史版本 1.3STL的六大组件 编辑 1.4有用的网址 2.string类 2.1string的多种定义方式 2.2string的插入 2.2.1尾插(push_back) 2.2.2insert插入 2.3拼接(append) 2.4删除 2.4.1尾…...
配置Nginx以支持通过HTTPS回源到CDN
要配置Nginx以支持通过HTTPS回源到CDN,你需要确保Nginx已正确配置SSL,并且能够处理来自CDN的HTTPS请求。以下是一个简化的Nginx配置示例,它配置了SSL并设置了代理服务器参数以回源到CDN: server {listen 443 ssl;server_name you…...
yolov10+strongsort的目标跟踪实现
此次yolov10deepsort不论是准确率还是稳定性,再次超越了之前的yolodeepsort系列。 yolov10介绍——实时端到端物体检测 YOLOv10 是清华大学研究人员在 UltralyticsPython 清华大学的研究人员在 YOLOv10软件包的基础上,引入了一种新的实时目标检测…...
C# 字符与字符串
本课要点: 1、字符类Char的使用 2、字符串类String的使用 3、可变字符串****StringBuilder 4、常见错误 一 何时用到字符与字符串 问题: 输出C#**课考试最高分:**98.5 输出最高分学生姓名:张三 输出最高分学生性别&#x…...
在Ubuntu 16.04上使用LEMP安装WordPress的方法
前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站。 简介 WordPress 是互联网上最流行的 CMS(内容管理系统)。它允许您在 MySQL 后端和 PHP 处理的基础上轻松设置灵…...
显示器放大后,大漠识图识色坐标偏移解决方法
原因分析: 显示器分辨率较高,DPI设置放大125% or 150% or 200%,游戏打开时也会默认会根据显示器的放大比例自行放大,但是大漠综合管理工具抓图不会放大; 解决方法: 1、大漠综合管理…...
C++容器之list基本使用
目录 前言 一、list的介绍? 二、使用 1.list的构造 2.list iterator的使用 3.list capacity 🥇 empty 🥇size 4.list element access 🥇 front 🥇 back 5.list modifiers 🥇 push_front 🥇 po…...
Redis-哨兵
概念 Redis Sentinel 相关名词解释 注意: 哨兵机制不负责存储数据,只是对其它的redis-server进程起到监控的作用哨兵节点,也会搞一个集合,防止一个挂了 ⼈⼯恢复主节点故障 用户监控: 实际开发中,对于服务器后端开发,监控程序,是很重要的 服务器长期运行,总会有一些意外,…...
Pikachu-Sql-Inject - 基于时间的盲注
基于时间的盲注: 就是前端的基于time 的盲注,什么错误信息都看不到,但是还可以通过特定的输入,判断后台的执行时间,从而确定注入。 mysql 里函数sleep() 是延时的意思,sleep(10)就是数据库延时10 秒返回内…...
JAVA开源项目 旅游管理系统 计算机毕业设计
本文项目编号 T 063 ,文末自助获取源码 \color{red}{T063,文末自助获取源码} T063,文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析5.4 用例设计 六、核…...
景联文科技入选《2024中国AI大模型产业图谱2.0版》数据集代表厂商
近日,大数据产业领域头部媒体数据猿携手上海大数据联盟联合发布了备受瞩目的《2024中国AI大模型产业图谱2.0版》。以大数据与AI为代表的智能技术为主要视角,聚焦全产业链,为业内提供更为专业直观的行业指导。 景联文科技凭借高质量数据集&…...
【C语言】内存函数的使用和模拟实现
文章目录 一、memcpy的使用和模拟实现二、memmove的使用和模拟实现三、memset的使用四、memcmp的使用 一、memcpy的使用和模拟实现 在之前我们学习了使用和模拟实现strncpy函数,它是一个字符串函数,用来按照给定的字节个数来拷贝字符串,那么问…...
在WPF中实现多语言切换的四种方式
在WPF中有多种方式可以实现多语言,这里提供几种常用的方式。 一、使用XML实现多语言切换 使用XML实现多语言的思路就是使用XML作为绑定的数据源。主要用到XmlDataProvider类. 使用XmlDataProvider.Source属性指定XML文件的路径或通过XmlDataProvider.Document指定…...
30min 的OpenCV learning Note
1.安装python和pycharm与环境搭配 打开Windows终端:(winR)(一般使用清华镜像网站安装库比较快) pip install opencv-contrib-python -i https://pypi.mirrors.ustc.edu.cn/simple 或者 python -m pip install open…...
C--编译和链接见解
欢迎各位看官!如果您觉得这篇文章对您有帮助的话 欢迎您分享给更多人哦 感谢大家的点赞收藏评论 感谢各位看官的支持!!! 一:翻译环境和运行环境 在ANSIIC的任何一种实现中,存在两个不同的环境1,…...
【QT Quick】基础语法:基础类与控件
QML 的基础类和控件中,我们可以看到主要的几个分类:基础控件类、窗口类以及组件类。以下是对这些控件及其属性、继承关系等的详细讲解: 控件关系总结 QtObject 是所有 QML 对象的基类。它定义了基础属性,主要用于逻辑和数据封装…...
使用 SSH 连接 Docker 服务器:IntelliJ IDEA 高效配置与操作指南
使用 SSH 连接 Docker 服务器:IntelliJ IDEA 高效配置与操作指南 本文详细介绍了如何在 2375 端口未开放的情况下,通过 SSH 连接 Docker 服务器并在 Idea 中进行开发。通过修改用户权限、生成密钥对以及配置 SSH 访问,用户可以安全地远程操作…...
Gas费用是什么?
Gas费用是什么? 每5个Byte 需要1个GasGasLimit 用来限制合约最多执行多少次运算GasPrice 每次计算需要支付的费用在Web3的语境中,尤其是在以太坊(Ethereum)这样的区块链平台上,Gas费是一个核心概念。以下是关于Gas费的详细解释: 1. 定义 Gas是以太坊网络上的计算单位,…...
大语言模型(LLM)的子模块拆拆分进行联邦学习;大语言模型按照多头(Multi-Head)拆分进行联邦学习
目录 大语言模型(LLM)的子模块拆拆分进行联邦学习 方式概述 简单示例 大语言模型按照多头(Multi-Head)拆分进行联邦学习 场景设定 多头拆分与联邦学习 示例说明 大语言模型(LLM)的子模块拆拆分进行联邦学习 大语言模型(LLM)的子模块拆分进行联邦学习,主要涉及…...
Qt 概述
1. Qlabel HelloWorld 程序 使用纯代码实现 // widget.cpp Widget::Widget(QWidget *parent): QWidget(parent), ui(new Ui::Widget) {ui->setupUi(this);// 给当前这个lable对象,指定一个父对象QLabel* label new QLabel(this);// C语言风格的字符串可以直接…...
移动应用的界面配置-手机银行APP
设置登录界面为线性布局,组件垂直居中排列设置主页为滚动模式,包括布局、添加背景图片设置按钮样式,包括形状、边框线的宽度和颜色 设置登录界面 设置界面为线性布局,组件垂直居中排列 --android:gravity"center_vertical…...
微服务nginx解析部署使用全流程
目录 1、nginx介绍 1、简介 2、反向代理 3、负载均衡 2、安装nginx 1、下载nginx 2、解压nginx安装包 3、安装nginx编辑 1、执行configure命令 2、执行make命令 4、启动nginx 1、查找nginx位置并启动 2、常用命令 3、反向代理 1、介绍反向代理配置 1、基础配置…...
华硕天选笔记本外接音箱没有声音
系列文章目录 文章目录 系列文章目录一.前言二.解决方法第一种方法第二种方法 一.前言 华硕天选笔记本外接音箱没有声音,在插上外接音箱时,系统会自动弹出下图窗口 二.解决方法 第一种方法 在我的电脑上选择 Headphone Speaker Out Headset 这三个选项…...
Unity中Socket_TCP异步连接,加入断线检测以及重连功能
1、服务端 using System; using System.Collections.Generic; using System.Text; #region 命名空间 using System.Net; using System.Net.Sockets; using System.Threading; using UnityEngine; #endregionnamespace AsynServerConsole {/// <summary>/// Tcp协议异步通…...
Android build子系统(01)Ninja构建系统解读
说明:本文将解读Ninja构建系统,这是当前Android Framework中广泛使用的构建工具。我们将从Ninja的起源和背景信息开始,逐步解读Ninja的优势和核心原理,并探讨其一般使用场景。然后介绍其在Android Framework中的应用及相关工具&am…...
徐老师的吉祥数
题目背景 文件读写 输入文件avoid.in 输出文件avoid.out 限制 1000ms 512MB 题目描述 众所周知, 3这个数字在有些时候不是很吉利,因为它谐音为 “散” 所以徐老师认为只要是 3的整数次幂的数字就不吉利 现在徐老师想知道,在某个范围[l,r] …...
使用html写一个能发起请求的登录界面
目录 head部分 内联样式部分 body部分 login-form类的div myModal类的div id script部分 总的代码 界面与操作演示 <!DOCTYPE html> <html lang"en"> <!DOCTYPE html> 这是文档类型声明,告诉浏览器这是一个 HTML文档。 <…...
五子棋双人对战项目(2)——登录模块
目录 一、数据库模块 1、创建数据库 2、使用MyBatis连接并操作数据库 编写后端数据库代码 二、约定前后端交互接口 三、后端代码编写 文件路径如下: UserAPI: UserMapper: 四、前端代码 登录页面 login.html: 注册页面…...
几种操作系统和几种cpu
常见的操作系统:windows,linux,macOS,统信,deepin,raspberry,andriod,iOS,鸿蒙,等等。 常见的cpu:intel,amd,龙芯&#x…...
[Cocoa]_[初级]_[使用NSNotificationCenter作为目标观察者实现时需要注意的事项]
场景 在开发Cocoa程序时,由于界面是用Objective-C写的。无法使用C的目标观察者[1]类。如果是使用第二种方案2[2],那么也需要增加一个代理类。那么有没有更省事的办法? 说明 开发界面的时候,经常是需要在子界面里传递数据给主界面࿰…...
电脑怎么制作视频短片/百度seo优化网站
1、启动失败 如果你启动项目失败,你通过注册FailureAnalyzers 来获取错误信息和解决办法。比如你启动应用的8080端口被占用了,你将看到如下信息: *************************** APPLICATION FAILED TO START ***************************Descr…...
wordpress 主頁html/南宁网站建设
注:本文所指的YUV均为YUV420中的I420格式(最常见的一种),其他格式不能用以下的代码。位深为8bit时,每个像素占用1字节,对应文件指针的fp.read(1);位深为10bit时,每个像素占用2字节,对应文件指针…...
淘宝首页网站怎么做/百度站长平台登录
原文链接:https://www.yuque.com/cppdev/algo/wu6rwp DFS生成森林 生成【非连通图】的【深度优先生成森林】 【存储方式】孩子兄弟链表 typedef struct CSNode{TElemType data;struct CSNode *firstchild, *nextsibling; }CSNode, *CSTree;// 建立无向图G的深度优…...
备案网站忘记密码/郑州专业seo哪家好
在JavaScript的世界里,一切都是对象。 但是某些对象还是和其他对象不太一样。为了区分对象的类型,我们用typeof操作符获取对象的类型,它总是返回一个字符串: typeof 123; // number typeof NaN; // number typeof str; // string …...
网站seo优化免费/站长工具查询官网
我不知道正常人看Linux下面文件夹的颜色(默认为深蓝)是不是有点晕晕的,看不清楚,反正对我这样的色弱的人来说,我看着很不爽,所以我到网上去找了一下,如果修改文件夹颜色的方法,网上真…...
陈木胜老婆/网站怎样关键词排名优化
Flash MX从入门到精通 科学出版社自Macromedia于2000年7月发布Flash 5.0以来,全球的闪客都开始期待着新一代Flash的问世,今年,大家的期待终于成功了,不过,不是Flash 6.0,而是Macromedia MX战略中的重要一员…...