C++复习笔记--STL的string容器和vector容器
1--string容器
string 本质上是一个类,其不同于指针 char*,string 类的内部封装了 char*,用于管理字符串,是一个 char* 型的容器;
1-1--string构造函数
string 的构造函数原型:
string(); // 创建一个空的字符串
string(const char* s); // 使用字符串 s 进行初始化
string(const string& str); // 使用一个 string 对象初始化另一个 string 对象;
string(int n, char c); // 使用 n 个字符 c 进行初始化;
代码实例:
#include <iostream>
#include <string>
int main(int argc, char* argv[]){// string(); // 创建一个空的字符串std::string s1;// string(const char* s); // 使用字符串 s 进行初始化const char* str = "hello world";std::string s2(str);// string(const string& str); // 使用一个 string 对象初始化另一个 string 对象;std::string s3(s2);// string(int n, char c); // 使用 n 个字符 c 进行初始化;std::string s4(10, 'a');std::cout << "s1: " << s1 << std::endl;std::cout << "s2: " << s2 << std::endl;std::cout << "s3: " << s3 << std::endl;std::cout << "s4: " << s4 << std::endl;return 0;
}1-2--string赋值操作
string 赋值操作的函数原型:
string& operator=(const char* s); // 将 char* 类型的字符串赋值给当前字符串
string& operator=(const string &s); // 将字符串 s 赋给当前的字符串
string& operator=(char c); // 将字符 c 赋给当前的字符串
string& assign(const char *s); // 将字符串 s 赋给当前字符串
string& assign(const char *s, int n); // 将字符串 s 的前 n 个字符赋给当前的字符串
string& assign(const string &s); // 将字符串 s 赋给当前字符串
string& assign(int n, char c); // 将 n 个字符 c 赋给当前字符串
代码实例:
#include <iostream>
#include <string>
int main(int argc, char* argv[]){// string& operator=(const char* s); // 将 char* 类型的字符串赋值给当前字符串std::string str1;str1 = "hello world";std::cout << "str1 = " << str1 << std::endl;// string& operator=(const string &s); // 将字符串 s 赋给当前的字符串std::string str2;str2 = str1;std::cout << "str2 = " << str2 << std::endl;// string& operator=(char c); // 将字符 c 赋给当前的字符串std::string str3;str3 = 'a';std::cout << "str3 = " << str3 << std::endl;// string& assign(const char *s); // 将字符串 s 赋给当前字符串std::string str4;str4.assign("hello C++");std::cout << "str4 = " << str4 << std::endl;// string& assign(const char *s, int n); // 将字符串 s 的前 n 个字符赋给当前的字符串std::string str5;str5.assign("hello C++", 5);std::cout << "str5 = " << str5 << std::endl;// string& assign(const string &s); // 将字符串 s 赋给当前字符串std::string str6;str6.assign(str5);std::cout << "str6 = " << str6 << std::endl;// string& assign(int n, char c); // 将 n 个字符 c 赋给当前字符串std::string str7;str7.assign(10, 'w');std::cout << "str7 = " << str7 << std::endl;return 0;
}
1-3--string字符串拼接
string 实现在字符串末尾拼接字符串,其函数原型如下:
string& operator+=(const char* str); // 重载+=操作符来拼接
string& operator+=(const char c); // 重载+=操作符来拼接
string& operator+=(const string& str); // 重载+=操作符来拼接
string& append(const char *s); // 把字符串 s 拼接到当前字符串末尾
string& append(const char *s, int n); // 把字符串 s 的前 n 个字符拼接到当前字符串末尾
string& append(const string &s); // 把字符串 s 拼接到当前字符串末尾
string& append(const string &s, int pos, int n); // 把字符串 s 从 pos 位置开始截取 n 个字符,拼接到当前字符串末尾
#include <iostream>
#include <string>
int main(int argc, char* argv[]){std::string str1 = "I";str1 += " Love sleeping";std::cout << "str1: " << str1 << std::endl;std::string str2 = " and eating.";str1 += str2;std::cout << "str1: " << str1 << std::endl;std::string str3 = "I";str3.append(" Love");std::cout << "str3: " << str3 << std::endl;str3.append(" game abcd", 5); // 前 n 个字符std::cout << "str3: " << str3 << std::endl;str3.append(str2, 0, 4); // 截取字符串规定位置作为拼接; 第2个参数表示截取的起始位置,第3个参数表示截取字符的个数std::cout << "str3: " << str3 << std::endl;return 0;
}
1-4--string查找与替换
查找:查找指定字符串是否存在;
替换:在指定的位置替换字符串;
函数原型:
int find(const string& str, int pos = 0) const; // 查找str第一次出现的位置,从pos开始查找;
int find(const char* s, int pos = 0) const; // 查找s第一次出现的位置,从pos开始查找;
int find(const char* s, int pos, int n) const; // 从 pos 位置查找s的前n个字符;
int find(const char c, int pos = 0) const; // 查找字符c第一次出现的位置;
int rfind(const string& str, int pos = npos) const; // 查找str第一次出现的位置,从pos开始查找;(从右往左)
int rfind(const char* s, int pos = npos) const; // 查找s出现的位置,从pos开始查找;(从右往左)
int rfind(const char* s, int pos, int n) const; // 从 pos 位置查找s的前n个字符;(从右往左)
int rfind(const char c, int pos = 0) const; // 查找字符c出现的位置;(从右往左)
string& replace(int pos, int n, const string& str); // 替换从pos开始n个字符为字符串str
string& replace(int pos, int n, const char* s); // 替换从pos开始n个字符为字符串s
代码实例:
#include <iostream>
#include <string>
int main(int argc, char* argv[]){std::string str1 = "abcdabcd";// 从左往右查找int pos = str1.find("cd");if (pos == -1){std::cout << "The dst string is not exist";}else{std::cout << "Find the string, the start pos is: " << pos << std::endl;}// 从右往左查找int pos2 = str1.rfind("cd");if (pos2 == -1){std::cout << "The dst string is not exist";}else{std::cout << "Find the string, the start pos is: " << pos2 << std::endl;}// 替换std::string str2 = "abcdefg";str2.replace(1, 3, "123456"); // 先在原字符串从位置 1 开始删除 3 个字符,再将目标字符串复制到原字符串std::cout << "str2: " << str2 << std::endl;return 0;
}
1-5--string字符串比较
字符串比较是按字符的 ASCII 码进行比较,有以下三种情况:① =,返回 0; ② >,返回1;③ <,返回 -1;
函数原型:
int compare(const string &s) const; // 与字符串 s 比较
int compare(const char *s) const; // 与字符串 s 比较
#include <iostream>
#include <string>
int main(int argc, char* argv[]){std::string str1 = "C++";std::string str2 = "C++";if(str1.compare(str2) == 0){std::cout << "str1 == str2" << std::endl;}else if(str1.compare(str2) > 0){std::cout << "str1 > str2" << std::endl;}else{std::cout << "str1 < str2" << std::endl;}return 0;
}
1-6--string字符串存取
string中单个字符存取方式有两种:
char& operator[](int n); // 通过[]方式取字符
char& at(int n); // 通过at方法获取字符
#include <iostream>
#include <string>
int main(int argc, char* argv[]){std::string str1 = "Hello";std::cout << "str1: " << str1 << std::endl;// 通过[]访问单个字符for(int i = 0; i < str1.size(); i++){std::cout << str1[i] << " ";}std::cout << std::endl;// 通过at访问单个字符for(int i = 0; i < str1.size(); i++){std::cout << str1.at(i) << " ";}std::cout << std::endl;// 修改单个字符str1[0] = 'A';str1.at(1) = 'B';std::cout << "str1: " << str1 << std::endl;return 0;
}
1-7--string字符串插入和删除
对 string 字符串进行插入和删除字符操作,其函数原型如下:
string& insert(int pos, const char* s); // 插入字符串
string& insert(int pos, const string& str); // 插入字符串
string& insert(int pos, int n, char c); // 在指定位置插入 n 个字符c
string& erase(int pos, int n = npos); // 删除从 Pos 开始的 n 个字符
#include <iostream>
#include <string>
int main(int argc, char* argv[]){std::string str1 = "Hello";std::cout << "str1: " << str1 << std::endl;// 插入字符串str1.insert(1, "AAA"); // 第一个参数表示插入的位置,第二个参数表示插入的字符串std::cout << "str1: " << str1 << std::endl;// 删除字符串str1.erase(1, 3); // 第一个参数表示删除的位置,第二个参数表示删除的个数std::cout << "str1: " << str1 << std::endl;return 0;
}
1-8--获取string子串
在规定位置截取string字符串的子串,其函数原型如下:
std::string substr(int pos = 0, int n = npos) const; // 返回由pos开始的n个字符组成的字符串
#include <iostream>
#include <string>
int main(int argc, char* argv[]){std::string str1 = "123456@sysu.edu.cn";int pos = str1.find("@");std::string subStr = str1.substr(0, pos);std::cout << "subStr = " << subStr << std::endl;return 0;
}
2--vector容器
vector 数据结构与数组类似,被称为单端数组;
vector 与普通数组的区别在于:普通数组时静态空间,而 vector 可以动态扩展;
2-1--vector构造函数
用于创建 vector 容器,其函数原型如下:
vector<T> v; // 默认构造函数
vector(v.begin(), v.end()); // 将v[begin(), end()]区间中的元素拷贝到容器
vector(n, elem); // 构造函数将n个elem拷贝到容器
vector(const vector &vec); // 拷贝构造函数
# include <iostream>
# include <vector>
// # include <string>
// # include <algorithm> // 标准算法的头文件void printVector(std::vector<int> &v){for(std::vector<int>::iterator it = v.begin(); it != v.end(); it++){std::cout << *it << " ";}std::cout << std::endl;
}void test01(){std::vector<int>v1; // 默认构造for(int i = 0; i < 10; i++){v1.push_back(i);}printVector(v1);std::vector<int>v2(v1.begin(), v1.end()); // 利用区间进行构造printVector(v2);// n 个 elem 方式构造std::vector<int>v3(10, 100); // 10个100printVector(v3);//拷贝构造std::vector<int>v4(v3);printVector(v4);
}int main(){test01();return 0;
}
2-2--vector赋值操作
vector容器赋值操作的函数原型如下:
vector& operator=(const vector &vec); // 重载等号操作符
assign(beg, end); // 将[beg, end]区间中的数据拷贝赋值给容器
assign(n, elem); // 将n个elem拷贝赋值给容器
# include <iostream>
# include <vector>void printVector(std::vector<int> &v){for(std::vector<int>::iterator it = v.begin(); it != v.end(); it++){std::cout << *it << " ";}std::cout << std::endl;
}void test01(){std::vector<int>v1; for(int i = 0; i < 10; i++){v1.push_back(i);}printVector(v1);// =赋值std::vector<int> v2;v2 = v1;printVector(v2);// assign赋值std::vector<int> v3;v3.assign(v1.begin(), v1.end());printVector(v3);std::vector<int> v4;v4.assign(10, 100);printVector(v4);
}int main(){test01();return 0;
}
2-3--vector容器的容量和大小
通过以下函数可以对vector容器的容量和大小进行操作:
empty(); // 判断容器是否为空
capacity(); // 容器的容量
size(); // 返回容器中元素的个数
resize(int num); // 重新指定容器的长度为num,若容器变长,则以默认值填充新位置;如果容器变短,则末尾超出容器长度的元素将会被删除;
resize(int num, elem); // 重新指定容器的长度为num,若容器变长,则以elem值填充新位置;如果容器变短,则末尾超出容器长度的元素将会被删除;
# include <iostream>
# include <vector>
// # include <string>
// # include <algorithm> // 标准算法的头文件void printVector(std::vector<int> &v){for(std::vector<int>::iterator it = v.begin(); it != v.end(); it++){std::cout << *it << " ";}std::cout << std::endl;
}void test01(){std::vector<int>v1; for(int i = 0; i < 10; i++){v1.push_back(i);}printVector(v1);if(v1.empty()){std::cout << "The vector is empty" << std::endl;}else{std::cout << "The vector is not empty" << std::endl;std::cout << "The capacity is: " << v1.capacity() << std::endl;std::cout << "The size is:" << v1.size() << std::endl;}// resizev1.resize(15);printVector(v1); // 默认以0填充v1.resize(20, 1);printVector(v1);v1.resize(10);printVector(v1);}int main(){test01();return 0;
}
2-4--vector的插入和删除
通过以下函数实现对vector容器的插入和删除:
push_back(ele); // 尾部插入元素ele
pop_back(); // 删除最后一个元素
insert(const_iterator pos, ele); // 迭代器指向位置pos插入元素ele
insert(const_iterator pos, int count, ele); // 迭代器指向位置pos插入count个元素ele
erase(const_iterator pos); // 删除迭代器指向的元素
erase(const_iterator start, const_iterator end); // 删除迭代器从start到end之间的元素
clear(); // 删除容器中所有元素
# include <iostream>
# include <vector>
// # include <string>
// # include <algorithm> // 标准算法的头文件void printVector(std::vector<int> &v){for(std::vector<int>::iterator it = v.begin(); it != v.end(); it++){std::cout << *it << " ";}std::cout << std::endl;
}void test01(){std::vector<int>v1; // 尾插v1.push_back(10);v1.push_back(20);v1.push_back(30);printVector(v1);// 尾删v1.pop_back();printVector(v1);// 插入v1.insert(v1.begin(), 1);printVector(v1);v1.insert(v1.begin(), 2, 66); // 开头插入2个66printVector(v1);v1.erase(v1.begin());printVector(v1);v1.erase(v1.begin(), v1.end() - 1);printVector(v1);v1.clear();printVector(v1);
}int main(){test01();return 0;
}
2-5--vector数据存取
使用以下函数可以实现对vector容器的数据存取:
at(int idx); // 返回索引idx所指的数据
operator[]; // 返回索引idx所指的数据
front(); // 返回容器中第一个数据元素
back(); // 返回容器中最后一个数据元素
# include <iostream>
# include <vector>
// # include <string>
// # include <algorithm> // 标准算法的头文件void printVector(std::vector<int> &v){for(std::vector<int>::iterator it = v.begin(); it != v.end(); it++){std::cout << *it << " ";}std::cout << std::endl;
}void test01(){std::vector<int>v1; for(int i = 0; i < 10; i++){v1.push_back(i);}// 通过[]访问for(int i = 0; i < v1.size(); i++){std::cout<< v1[i] << " ";}std::cout << std::endl;// 通过at访问for(int i = 0; i < v1.size(); i++){std::cout<< v1.at(i) << " ";}std::cout << std::endl;// 获取第一个元素std::cout << "The first elem is: " << v1.front() << std::endl;// 获取最后一个元素std::cout << "The last elem is: " << v1.back() << std::endl;}int main(){test01();return 0;
}
2-6--vector容器互换
通过以下函数实现两个容器的互换:
swap(vec); // 将vec容器的元素和原来容器的元素进行互换;
# include <iostream>
# include <vector>
// # include <string>
// # include <algorithm> // 标准算法的头文件void printVector(std::vector<int> &v){for(std::vector<int>::iterator it = v.begin(); it != v.end(); it++){std::cout << *it << " ";}std::cout << std::endl;
}void test01(){std::vector<int>v1; for(int i = 0; i < 10; i++){v1.push_back(i);}std::vector<int> v2;for(int i = 10; i > 0; i--){v2.push_back(i);}std::cout << "互换前: " << std::endl;printVector(v1);printVector(v2);std::cout << "互换后: " << std::endl;v1.swap(v2);printVector(v1);printVector(v2);}void test02(){std::vector<int>v1; for(int i = 0; i < 100000; i++){v1.push_back(i);}std::cout << "v1.capacity: " << v1.capacity() << std::endl;std::cout << "v1.size: " << v1.size() << std::endl;v1.resize(3); // 重新指定大小,但容量并没有减少std::cout << "v1.capacity: " << v1.capacity() << std::endl;std::cout << "v1.size: " << v1.size() << std::endl;// 使用swap收缩内存std::vector<int>(v1).swap(v1); // std::vector<int>(v1)匿名对象std::cout << "v1.capacity: " << v1.capacity() << std::endl;std::cout << "v1.size: " << v1.size() << std::endl;}int main(){test02();return 0;
}
2-7--vector预留空间
通过预留空间可以减少vector在动态扩展容量时的扩展次数;
reserve(int len); // 容器预留 len 个元素长度,预留位置不初始化,元素不可访问;
# include <iostream>
# include <vector>
// # include <string>
// # include <algorithm> // 标准算法的头文件void printVector(std::vector<int> &v){for(std::vector<int>::iterator it = v.begin(); it != v.end(); it++){std::cout << *it << " ";}std::cout << std::endl;
}void test01(){std::vector<int>v1; int num1 = 0; // 统计开辟次数int *p1 = NULL;for(int i = 0; i < 100000; i++){v1.push_back(i);if(p1 != &v1[0]){p1 = &v1[0];num1++;}}std::cout << "num: " << num1 << std::endl;// 利用reserve()预留空间std::vector<int>v2; v2.reserve(100000);int num2 = 0; // 统计开辟次数int *p2 = NULL;for(int i = 0; i < 100000; i++){v2.push_back(i);if(p2 != &v2[0]){p2 = &v2[0];num2++;}}std::cout << "num: " << num2 << std::endl;
}int main(){test01();return 0;
}
相关文章:
C++复习笔记--STL的string容器和vector容器
1--string容器string 本质上是一个类,其不同于指针 char*,string 类的内部封装了 char*,用于管理字符串,是一个 char* 型的容器;1-1--string构造函数string 的构造函数原型:string(); // 创建一个空的字符串…...
第一章 软件项目管理概述
项目(Project)是为了创造一个唯一的产品或提供一个唯一的服务而进行的临时性的努力。项目的特征PMBOK(A guide to the Project management Body Of Knowledge:项目管理知识体系指南)五大过程组和十大知识领域从时间角度出发,项目管理分为五大过程组:启动…...
【Linux系统编程】06:共享内存
共享内存 OVERVIEW共享内存一、文件上锁flock二、共享内存1.关联共享内存ftok2.获取共享内存shmget3.绑定共享内存shmat4.绑定分离shmdt5.控制共享内存shmctl三、亲缘进程间通信1.共享内存写入与读取2.共享内存解绑与删除3.共享内存综合四、非亲缘进程间通信1.通过sleep同步2.通…...
【专项】112. 路径总和
112. 路径总和 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径,这条路径上所有节点值相加等于目标和 targetSum 。如果存在,返回 true ;否则,返回 false 。 叶子节点 …...
【数据结构】堆排序
堆是一种叫做完全二叉树的数据结构,可以分为大根堆,小根堆,而堆排序就是基于这种结构而产生的一种程序算法。大堆:每个节点的值都大于或者等于他的左右孩子节点的值小堆:每个结点的值都小于或等于其左孩子和右孩子结点…...
论文阅读笔记《GAMnet: Robust Feature Matching via Graph Adversarial-Matching Network》
核心思想 本文提出一种基于图对抗神经网络的图匹配算法(GAMnet),使用图神经网络作为生成器分别生成源图和目标图的节点的特征,并用一个多层感知机作为辨别器来区分两个特征是否来自同一个图,通过对抗训练的办法提高生成器特征提取…...
数据安全—数据完整性校验
1、数据安全保障三要素即 保密性 完整性、可用性机密性:要求数据不被他人轻易获取,需要进行数据加密。完整性:要求数据不被他人随意修改,需要进行签名技术可用性:要求服务不被他人恶意攻击,需要进行数据校验…...
Java 最小路径和
最小路径和中等给定一个包含非负整数的 m x n 网格 grid ,请找出一条从左上角到右下角的路径,使得路径上的数字总和为最小。说明:每次只能向下或者向右移动一步。示例 1:输入:grid [[1,3,1],[1,5,1],[4,2,1]]输出&…...
Flask+VUE前后端分离的登入注册系统实现
首先Pycharm创建一个Flask项目: Flask连接数据库需要下载的包: pip install -U flask-cors pip install flask-sqlalchemy Flask 连接和操作Mysql数据库 - 王滚滚啊 - 博客园 (cnblogs.com) sqlAlchemy基本使用 - 简书 (jianshu.com) FlaskVue前后端分…...
【Go】用Go在命令行输出好看的表格
用Go在命令行输出好看的表格前言正文生成Table表头设置插入行表格标题自动标号单元格合并列合并行合并样式设置居中设置数字自动高亮标红完整Demo代码结语前言 最近在写一些运维小工具,比如批量进行ping包的工具,实现不困难,反正就是ping&am…...
怎么处理消息重发的问题?
消息队列在消息传递的过程中,如果出现传递失败的情况,发送方会重试,在重试的过程中,可能会产生重复的消息。 消息重复的情况必然存在 关于传递消息时能够提供的服务质量标准,MQTT协议给出了三种不同的标准࿱…...
JVM 运行时数据区(数据区组成表述,程序计数器,java虚拟机栈,本地方法栈)
JVM 运行时数据区JVM 运行时数据区3.1运行时的数据区组成概述3.1.1程度计数器3.1.2java虚拟机栈3.1.3本地方法栈3.1.4java堆3.1.5方法区3.2程序计数器3.3java虚拟机栈3.4本地方法栈JVM 运行时数据区 堆,方法区(元空间) 主要用来存放数据 是线程共享的. 程序计数器,本地方法栈…...
Oracle ASM磁盘组配置、日常运维、故障处理等操作资料汇总
ASM(自动存储管理)在数据库中是非常重要的组成部分,它可以为磁盘提供统一的存储管理、提高磁盘访问的性能和可用性、简化管理复杂度,从而为数据库的运行提供更好的支持。这里就为大家整理了墨天轮数据社区上一些ASM相关基础知识、…...
java对象的创建与内存分配机制
文章目录对象的创建与内存分配机制对象的创建类加载检查分配内存初始化零值设置对象头指向init方法其他:指针压缩对象内存分配对象在栈上分配对象在Eden区中分配大对象直接分配到老年代长期存活的对象进入老年代对象动态年龄判断老年代空间分配担保机制对象的内存回…...
本地存储localStorage、sessionStorage
目录 一、localStorage 二、sessionStorage 三、本地存储处理复杂数据 一、localStorage 介绍 (1)数据存储在用户浏览器中 (2)设置、读取方便、甚至页面刷新不会丢失数据 (3)容量较大,se…...
JavaSE: 网络编程
1.1 概述java程序员面对统一的网络编程环境B/S 架构 和 C/S架构1.2 网络通信的两个要素通信双方的地址:ip 端口号网络通信协议:TCP/IP协议(事实上的国际规则)、OSI模型(理想化)1.3 Inet Address本地回环地…...
计算机图形学09:二维观察之点的裁剪
作者:非妃是公主 专栏:《计算机图形学》 博客地址:https://blog.csdn.net/myf_666 个性签:顺境不惰,逆境不馁,以心制境,万事可成。——曾国藩 文章目录专栏推荐专栏系列文章序一、二维观察基本…...
2023Java 并发编程面试题
Java 并发编程 1、在 java 中守护线程和本地线程区别? java 中的线程分为两种:守护线程(Daemon)和用户线程(User)。任何线程都可以设置为守护线程和用户线程,通过方法Thread.setDaemon(boolon…...
CAD如何绘制A0/A1/A2/A3/A4图框?
在CAD制图时,设计师一般会使用企业的定制图框模板或者个人的特色图框模板,让设计方案更加标准化、规范化。对于新人设计师而言,完成CAD制图已经非常头疼了,图框的绘制更是手忙脚乱。那么是否有更加高效的方式来完成A0、A1、A2、A3…...
R 安装 “umap-learn“ python 包
首先需要在R中下载并读取reticulate包,该包提供了一系列R-Python的交互式命令由于之前在电脑中通过三个方式安装了Python:直接安装 Python 3.10安装Anaconda,携带3.9安装 Miniconda,又是另外一个版本的Python版本各不相同…...
Ubuntu系统下交叉编译openssl
一、参考资料 OpenSSL&&libcurl库的交叉编译 - hesetone - 博客园 二、准备工作 1. 编译环境 宿主机:Ubuntu 20.04.6 LTSHost:ARM32位交叉编译器:arm-linux-gnueabihf-gcc-11.1.0 2. 设置交叉编译工具链 在交叉编译之前&#x…...
Java如何权衡是使用无序的数组还是有序的数组
在 Java 中,选择有序数组还是无序数组取决于具体场景的性能需求与操作特点。以下是关键权衡因素及决策指南: ⚖️ 核心权衡维度 维度有序数组无序数组查询性能二分查找 O(log n) ✅线性扫描 O(n) ❌插入/删除需移位维护顺序 O(n) ❌直接操作尾部 O(1) ✅内存开销与无序数组相…...
LeetCode - 394. 字符串解码
题目 394. 字符串解码 - 力扣(LeetCode) 思路 使用两个栈:一个存储重复次数,一个存储字符串 遍历输入字符串: 数字处理:遇到数字时,累积计算重复次数左括号处理:保存当前状态&a…...
2024年赣州旅游投资集团社会招聘笔试真
2024年赣州旅游投资集团社会招聘笔试真 题 ( 满 分 1 0 0 分 时 间 1 2 0 分 钟 ) 一、单选题(每题只有一个正确答案,答错、不答或多答均不得分) 1.纪要的特点不包括()。 A.概括重点 B.指导传达 C. 客观纪实 D.有言必录 【答案】: D 2.1864年,()预言了电磁波的存在,并指出…...
MMaDA: Multimodal Large Diffusion Language Models
CODE : https://github.com/Gen-Verse/MMaDA Abstract 我们介绍了一种新型的多模态扩散基础模型MMaDA,它被设计用于在文本推理、多模态理解和文本到图像生成等不同领域实现卓越的性能。该方法的特点是三个关键创新:(i) MMaDA采用统一的扩散架构…...
Vue2 第一节_Vue2上手_插值表达式{{}}_访问数据和修改数据_Vue开发者工具
文章目录 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染2. 插值表达式{{}}3. 访问数据和修改数据4. vue响应式5. Vue开发者工具--方便调试 1.Vue2上手-如何创建一个Vue实例,进行初始化渲染 准备容器引包创建Vue实例 new Vue()指定配置项 ->渲染数据 准备一个容器,例如: …...
论文浅尝 | 基于判别指令微调生成式大语言模型的知识图谱补全方法(ISWC2024)
笔记整理:刘治强,浙江大学硕士生,研究方向为知识图谱表示学习,大语言模型 论文链接:http://arxiv.org/abs/2407.16127 发表会议:ISWC 2024 1. 动机 传统的知识图谱补全(KGC)模型通过…...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
【数据分析】R版IntelliGenes用于生物标志物发现的可解释机器学习
禁止商业或二改转载,仅供自学使用,侵权必究,如需截取部分内容请后台联系作者! 文章目录 介绍流程步骤1. 输入数据2. 特征选择3. 模型训练4. I-Genes 评分计算5. 输出结果 IntelliGenesR 安装包1. 特征选择2. 模型训练和评估3. I-Genes 评分计…...
