C++之STL整理(2)之vector超详用法整理
C++之STL整理(2)之vector用法(创建、赋值、方法)整理
注:整理一些突然学到的C++知识,随时mark一下
例如:忘记的关键字用法,新关键字,新数据结构
C++ 的vector用法整理
- C++之STL整理(2)之vector用法(创建、赋值、方法)整理
- 一、vector的初始化
- 1、默认构造函数
- 2、拷贝构造函数copy区间
- 3、指定数量和元素值的构造函数
- 4、指定数量的构造函数
- 5、拷贝构造函数
- 二、vector的初始化-赋值
- 1、.assign(beg, end) 赋值操作
- 2、.assign(n, elem) 赋值操作
- 3、重载等号操作符 operator=
- 4、直接列表初始化 `Vector<T> {,};`
- 5、swap 函数
- 三、数据得增删查改
- 1、at(int id)接口
- 2、front()接口
- 3、back()接口
- 4、[id]直接取
- 5、插入函数
- 6、尾部添加 push_back(ele)
- 7、尾部删去 pop_back()
- 8、删区间
- 9、删指定位置
- 10、清空
- 四、其他接口
- 1、size()成员函数
- 2、empty()
- 3、resize(int num)
- 4、capacity()
- 5、reserve(int len)
- 总结
提示:本文为 C++ 中 vector构造、赋值、接口 的写法和举例
一、vector的初始化
根据vector的以下封装好的构造函数,现在示例每种构造方式的创建:
vector构造函数:vector<T> v; //默认构造函数
vector(v.begin(), v.end());//将v[begin(), end())区间中的元素copy给对象。
vector(n, elem);//构造函数将n个elem赋给对象。
vector(n);//构造函数将n个0或空赋值给对象。
vector(const vector &vec);//拷贝构造函数。
1、默认构造函数
创建一个空的vector。
#include <iostream>
#include <vector> int main() { std::vector<int> v; // 创建一个空的vector std::cout << "Size of vector v: " << v.size() << std::endl; // 输出:Size of vector v: 0 return 0;
}
2、拷贝构造函数copy区间
假设有一个已存在的vector,我们想要创建一个新的vector并拷贝其中一部分元素。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {1, 2, 3, 4, 5}; std::vector<int> v2(v.begin(), v.begin() + 3); // 拷贝前3个元素 for (int num : v2) { std::cout << num << " "; // 输出:1 2 3 } std::cout << std::endl; return 0;
}
3、指定数量和元素值的构造函数
创建一个包含特定数量且所有元素都具有相同值的vector。
#include <iostream>
#include <vector> int main() { std::vector<int> v(5, 10); // 创建一个包含5个10的vector for (int num : v) { std::cout << num << " "; // 输出:10 10 10 10 10 } std::cout << std::endl; return 0;
}
4、指定数量的构造函数
创建一个包含特定数量的vector,所有元素默认初始化为该类型的默认值(对于基本类型如int,默认值为0)。
#include <iostream>
#include <vector> int main() { std::vector<int> v(5); // 创建一个包含5个0的vector for (int num : v) { std::cout << num << " "; // 输出:0 0 0 0 0 } std::cout << std::endl; return 0;
}
5、拷贝构造函数
从另一个已存在的vector创建一个新的vector,作为它的拷贝。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {1, 2, 3, 4, 5}; std::vector<int> v2(v); // 使用拷贝构造函数创建v2,它是v的拷贝 for (int num : v2) { std::cout << num << " "; // 输出:1 2 3 4 5 } std::cout << std::endl; return 0;
}
二、vector的初始化-赋值
vector常用赋值方式:
assign(beg, end);//将[beg, end)区间中的数据拷贝赋值。
assign(n, elem);//将n个elem拷贝赋值。
vector& operator=(const vector &vec);//重载=
Vector<T> = {,,,};//直接赋值一个数组
Vector<T> {,,,};
swap(vec);// 与vec的元素互换。
1、.assign(beg, end) 赋值操作
使用区间迭代器将另一个容器或数组中的数据拷贝到vector中。
#include <iostream>
#include <vector>
#include <algorithm> // for std::next int main() { std::vector<int> v = {1, 2, 3, 4, 5}; int arr[] = {6, 7, 8, 9, 10}; v.assign(std::begin(arr), std::end(arr)); // 赋值arr数组到v for (int num : v) { std::cout << num << " "; // 输出:6 7 8 9 10 } std::cout << std::endl; return 0;
}
2、.assign(n, elem) 赋值操作
将n个值为elem的元素拷贝到vector中。
#include <iostream>
#include <vector> int main() { std::vector<int> v; v.assign(5, 10); // 赋值5个10到v for (int num : v) { std::cout << num << " "; // 输出:10 10 10 10 10 } std::cout << std::endl; return 0;
}
3、重载等号操作符 operator=
使用重载的等号操作符将一个vector的内容赋给另一个vector。
#include <iostream>
#include <vector> int main() { std::vector<int> v1 = {1, 2, 3, 4, 5}; std::vector<int> v2; v2 = v1; // 使用重载的等号操作符赋值v1到v2 for (int num : v2) { std::cout << num << " "; // 输出:1 2 3 4 5 } std::cout << std::endl; return 0;
}
4、直接列表初始化 Vector<T> {,};
在创建vector对象时,直接使用列表初始化语法。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {21, 22, 23, 24, 25}; // 直接列表初始化 for (int num : v) { std::cout << num << " "; // 输出:21 22 23 24 25 } std::cout << std::endl; return 0;
}
5、swap 函数
使用std::swap或vector的成员函数swap来交换两个vector的内容。
#include <iostream>
#include <vector>
#include <algorithm> // for std::swap int main() { std::vector<int> v1 = {1, 2, 3}; std::vector<int> v2 = {4, 5, 6}; std::swap(v1, v2); // 使用std::swap交换v1和v2的内容 // 输出交换后的v1 for (int num : v1) { std::cout << num << " "; }std::cout << std::endl; return 0;
}
三、数据得增删查改
vector数据存取操作,主要有at()、front()、back()接口和括号[]取得方法。
vector插入和删除操作,主要有insert、erase、clear、pushback、popback接口。
1、at(int id)接口
at成员函数用于通过索引访问元素,并且在索引越界时会抛出std::out_of_range
异常。
#include <iostream>
#include <vector>
#include <stdexcept> // for std::out_of_range int main() { std::vector<int> v = {10, 20, 30, 40, 50}; try { std::cout << v.at(2) << std::endl; // 输出:30 std::cout << v.at(10) << std::endl; // 抛出std::out_of_range异常 } catch (const std::out_of_range& e) { std::cerr << "Index out of range: " << e.what() << std::endl; } return 0;
}
2、front()接口
front成员函数返回容器中第一个元素的引用。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30, 40, 50}; std::cout << v.front() << std::endl; // 输出:10 return 0;
}
3、back()接口
back成员函数返回容器中最后一个元素的引用。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30, 40, 50}; std::cout << v.back() << std::endl; // 输出:50 return 0;
}
4、[id]直接取
operator[]通过索引直接访问元素,如果越界,行为是未定义的(通常会导致程序崩溃)。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30, 40, 50}; std::cout << v[2] << std::endl; // 输出:30 // std::cout << v[10] << std::endl; // 未定义行为,通常会导致程序崩溃 return 0;
}
5、插入函数
insert(const_iterator pos, int count, ele)
在迭代器pos指向的位置插入count个值为ele的元素。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 40, 50}; v.insert(v.begin() + 1, 2, 30); // 在索引1的位置插入2个30 for (int num : v) { std::cout << num << " "; // 输出:10 30 30 20 40 50 } std::cout << std::endl; return 0;
}
6、尾部添加 push_back(ele)
在容器的尾部插入一个元素ele。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30}; v.push_back(40); // 在尾部插入40 for (int num : v) { std::cout << num << " "; // 输出:10 20 30 40 } std::cout << std::endl; return 0;
}
7、尾部删去 pop_back()
删去容器的最后一个元素。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30, 40};v.pop_back(); // 删除最后一个元素40 for (int num : v) { std::cout << num << " "; // 输出:10 20 30 } std::cout << std::endl; return 0;
}
8、删区间
erase(const_iterator start, const_iterator end)
删去从迭代器start到end(不包括end)之间的所有元素。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30, 40, 50}; v.erase(v.begin() + 1, v.begin() + 3); // 删除索引1到2之间的元素(即20和30) for (int num : v) { std::cout << num << " "; // 输出:10 40 50 } std::cout << std::endl; return 0;
}
9、删指定位置
erase(const_iterator pos)
删除迭代器pos指向的元素。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30, 40, 50}; v.erase(v.begin() + 2); // 删除索引2的元素(即30) for (int num : v) { std::cout << num << " "; // 输出:10 20 40 50 } std::cout << std::endl; return 0;
}
10、清空
clear()
删掉容器中的所有元素。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30, 40, 50}; v.clear(); // 删除所有元素 if (v.empty()) { std::cout << "Vector is empty." << std::endl; // 输出:Vector is empty. } return 0;
}
这些操作提供了对vector容器内容的灵活操作,可以轻松地插入和删除元素,以满足程序的需要。使用迭代器(或索引)时,请确保它们指向有效的容器位置,以避免未定义行为或异常。
四、其他接口
1、size()成员函数
返回容器中的元素个数。这个数量等于当前vector实际包含的元素数。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30, 40, 50}; std::cout << "Size of vector: " << v.size() << std::endl; // 输出:Size of vector: 5 return 0;
}
2、empty()
empty成员函数检查容器是否为空。如果容器中没有元素,它返回true;否则返回false。
#include <iostream>
#include <vector> int main() { std::vector<int> v; if (v.empty()) { std::cout << "Vector is empty." << std::endl; // 输出:Vector is empty. } else { std::cout << "Vector is not empty." << std::endl; } return 0;
}
3、resize(int num)
resize成员函数用于改变容器的大小。如果新的大小num大于当前大小,则容器会增长,新添加的元素会被初始化为默认值(对于内置类型,通常是0)。如果num小于当前大小,则末尾超出的元素会被删除。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30}; v.resize(5); // 容器增长,新元素初始化为0 for (int num : v) { std::cout << num << " "; // 输出:10 20 30 0 0 } std::cout << std::endl; v.resize(2); // 容器缩短,超出的元素被删除 for (int num : v) { std::cout << num << " "; // 输出:10 20 } std::cout << std::endl; return 0;
}
resize(int num, elem)
是resize的另一种重载形式。它允许你为新的元素指定一个初始值elem。如果容器增长,新添加的元素会被初始化为elem。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30}; v.resize(5, 42); // 容器增长,新元素初始化为42 for (int num : v) { std::cout << num << " "; // 输出:10 20 30 42 42 } std::cout << std::endl; return 0;
}
4、capacity()
capacity成员函数返回容器当前分配的存储空间大小。这通常大于或等于size返回的值,因为vector为了效率可能会预留一些额外的空间。
#include <iostream>
#include <vector> int main() { std::vector<int> v = {10, 20, 30}; std::cout << "Size: " << v.size() << ", Capacity: " << v.capacity() << std::endl; // 输出可能类似于:Size: 3, Capacity: 3 或 Size: 3, Capacity: 4(取决于实现) return 0;
}
5、reserve(int len)
reserve成员函数用于预分配容器的存储空间。它并不改变容器的大小(即size的值不变),但会增加容器的capacity。预分配空间可以提高插入元素的效率,因为当容器需要增长时,它可能不需要重新分配整个存储空间。reserve成员函数用于预分配容器的存储空间,它可以帮助提高插入元素的效率,因为当容器需要增长时,如果已经有足够的预留空间,它就可以避免重新分配整个存储空间。
这里是一个更详细的例子,展示了如何使用reserve来预分配vector的存储空间:
#include <iostream>
#include <vector> int main() { std::vector<int> v; // 初始时,size和capacity都是0 std::cout << "Initial size: " << v.size() << ", Initial capacity: " << v.capacity() << std::endl; // 使用reserve预分配至少10个元素的存储空间 v.reserve(10); // size仍然是0,因为我们没有添加任何元素 // 但capacity至少为10 std::cout << "After reserve, size: " << v.size() << ", Capacity: " << v.capacity() << std::endl; // 添加元素,直到达到或超过预留的capacity for (int i = 0; i < 15; ++i) { v.push_back(i); } // size现在是15,因为我们添加了15个元素 // capacity可能已经增长,以容纳更多的元素 std::cout << "After adding elements, size: " << v.size() << ", Capacity: " << v.capacity() << std::endl; return 0;
}
输出可能类似于:
Initial size: 0, Initial capacity: 0
After reserve, size: 0, Capacity: 10
After adding elements, size: 15, Capacity: 20 (或更大,取决于实现)
capacity的确切值可能因不同的vector实现而异。在上面的例子中,当添加超过预留capacity的元素时,vector可能会再次分配内存,并可能增加其capacity。这样做是为了避免在每次添加元素时都重新分配内存,从而提高性能。在实践中,如果你知道将要向vector中添加大量元素,使用reserve来预分配足够的空间通常是一个好习惯,因为这可以避免不必要的内存分配和元素复制。
总结
相关文章:
C++之STL整理(2)之vector超详用法整理
C之STL整理(2)之vector用法(创建、赋值、方法)整理 注:整理一些突然学到的C知识,随时mark一下 例如:忘记的关键字用法,新关键字,新数据结构 C 的vector用法整理 C之STL整…...
机器学习作业二之KNN算法
KNN(K- Nearest Neighbor)法即K最邻近法,最初由 Cover和Hart于1968年提出,是一个理论上比较成熟的方法,也是最简单的机器学习算法之一。该方法的思路非常简单直观:如果一个样本在特征空间中的K个最相似&…...
笔记81:在服务器中运行 Carla 报错 “Disabling core dumps.”
背景:使用实验室提供的服务器配 Carla-ROS2 联合仿真的实验环境,在安装好 Carla 后运行 ./CarlaUE4.sh 但是出现 Disabling core dumps. 报错,而且不会出现 Carla 的窗口; 解决:运行以下命令 ./CarlaUE4.sh -carl…...
ensp中pc机访问不同网络的服务器
拓扑图如下,资源已上传 说明:pc通过2个路由访问server服务器 三条线路分别是192.168.1.0网段,192.168.2.0网段和192.168.3.0网段,在未配置的情况下,pc设备是访问不到server的 具体操作流程 第一;pc设备…...
CSGO赛事管理系统的设计与实现|Springboot+ Mysql+Java+ B/S结构(可运行源码+数据库+设计文档)
本项目包含可运行源码数据库LW,文末可获取本项目的所有资料。 推荐阅读100套最新项目持续更新中..... 2024年计算机毕业论文(设计)学生选题参考合集推荐收藏(包含Springboot、jsp、ssmvue等技术项目合集) 目录 1. 系…...
win10微软拼音输入法 - bug - 在PATH变量为空的情况下,无法输入中文
文章目录 win10微软拼音输入法 - bug - 在PATH变量为空的情况下,无法输入中文概述笔记实验前提条件100%可以重现 - 无法使用win10拼音输入法输入中文替代的输入法软件备注备注END win10微软拼音输入法 - bug - 在PATH变量为空的情况下,无法输入中文 概述…...
Java安全篇-Fastjson漏洞
前言知识: 一、json 概念: json全称是JavaScript object notation。即JavaScript对象标记法,使用键值对进行信息的存储。 格式: {"name":"wenda","age":21,} 作用: JSON 可以作为…...
Flink系列之:Flink SQL Gateway
Flink系列之:Flink SQL Gateway 一、Flink SQL Gateway二、部署三、启动SQL Gateway四、运行 SQL 查询五、SQL 网关启动选项六、SQL网关配置七、支持的端点 一、Flink SQL Gateway SQL 网关是一项允许多个客户端从远程并发执行 SQL 的服务。它提供了一种简单的方法…...
Linux基础篇:解析Linux命令执行的基本原理
Linux 命令是一组可在 Linux 操作系统中使用的指令,用于执行特定的任务,例如管理文件和目录、安装和配置软件、网络管理等。这些命令通常在终端或控制台中输入,并以文本形式显示输出结果。 Linux 命令通常以一个或多个单词的简短缩写或单词…...
LeetCode-热题100:153. 寻找旋转排序数组中的最小值
题目描述 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 [4,5,6,7,0,1,2] 若旋转 7 次…...
游戏客户客户端面经
C#和C的类的区别C# List添加100个Obj和100 int内存是怎么变化的重载和重写的区别,重载是怎么实现的重写是怎么实现的?虚函数表是类的还是对象的用过哪些C的STLVector底层是怎么实现的Vector添加一百次数据内存是怎么变化Map的底层,红黑树的查…...
网站业务对接DDoS高防
准备需要接入的网站域名清单,包含网站的源站服务器IP(仅支持公网IP的防护)、端口信息等。所接入的网站域名必须已完成ICP备案。如果您的网站支持HTTPS协议访问,您需要准备相应的证书和私钥信息,一般包含格式为.crt的公…...
Python-VBA编程500例-024(入门级)
字符串写入的行数(Line Count For String Writing)在实际应用中有着广泛的应用场景。常见的应用场景有: 1、文本编辑及处理:在编写或编辑文本文件时,如使用文本编辑器或文本处理器,经常需要处理字符串并确定其在文件中的行数。这…...
蓝桥杯 - 小明的背包1(01背包)
解题思路: 本题属于01背包问题,使用动态规划 dp[ j ]表示容量为 j 的背包的最大价值 注意: 需要时刻提醒自己dp[ j ]代表的含义,不然容易晕头转向 注意越界问题,且 j 需要倒序遍历 如果正序遍历 dp[1] dp[1 - vo…...
学习java第二十六天
Spring是一个开源框架,Spring是一个轻量级的Java 开发框架。它是为了解决企业应用开发的复杂性而创建的。框架的主要优势之一就是其分层架构,分层架构允许使用者选择使用哪一个组件,同时为 J2EE 应用程序开发提供集成的框架。Spring使用基本的…...
Go第三方框架--gin框架(二)
4. gin框架源码–Engine引擎和压缩前缀树的建立 讲了这么多 到标题4才开始介绍源码,主要原因还是想先在头脑中构建起 一个大体的框架 然后再填肉 这样不容易得脑血栓。标题四主要涉及标题2.3的步骤一 也就是 标题2.3中的 粗线框中的内容 4.1 Engine 引擎的建立 见…...
五分钟搞懂UDS刷写34/36/37服务(内含S19文件解读)
目录 34服务 36服务 37服务 S19文件介绍 理论太多总是让人头昏,通过举例的方法学习刷写是最好的办法,刷写中最重要的就是34/36/37服务之间的联动,在我当前的项目中37服务较为简单,等待36服务全部传输完成之后,发送…...
知识图谱智能问答系统技术实现
知识图谱是以一种结构化的方式存储和描述知识的数据集合,它将知识表示为节点和边的形式,并可以对这些节点和边进行有意义的存储、查询、连接和关系挖掘等操作。知识图谱不仅可以为人提供理解信息的能力,而且还能为机器提供对信息进行分析、推…...
【unity】如何汉化unity编译器
在【unity】如何汉化unity Hub这篇文章中,我们已经完成了unity Hub的汉化,现在让我们对unity Hub安装的编译器也进行下汉化处理。 第一步:在unity Hub软件左侧栏目中点击安装,选择需要汉化的编译器,再点击设置图片按钮…...
为什么Python不适合写游戏?
知乎上有热门个问题:Python 能写游戏吗?有没有什么开源项目? Python可以开发游戏,但不是好的选择 Python作为脚本语言,一般很少用来开发游戏,但也有不少大型游戏有Python的身影,比如࿱…...
查询优化-提升子查询-UNION类型
瀚高数据库 目录 文档用途 详细信息 文档用途 剖析UNION类型子查询提升的条件和过程 详细信息 注:图片较大,可在浏览器新标签页打开。 SQL: SELECT * FROM score sc, LATERAL(SELECT * FROM student WHERE sno 1 UNION ALL SELECT * FROM student…...
【数据结构 | 图论】如何用链式前向星存图(保姆级教程,详细图解+完整代码)
一、概述 链式前向星是一种用于存储图的数据结构,特别适合于存储稀疏图,它可以有效地存储图的边和节点信息,以及边的权重。 它的主要思想是将每个节点的所有出边存储在一起,通过数组的方式连接(类似静态数组实现链表…...
气象预测新篇章:Python人工智能的变革力量
Python是功能强大、免费、开源,实现面向对象的编程语言,在数据处理、科学计算、数学建模、数据挖掘和数据可视化方面具备优异的性能,这些优势使得Python在气象、海洋、地理、气候、水文和生态等地学领域的科研和工程项目中得到广泛应用。可以…...
基于微信小程序的民宿短租系统设计与实现(论文+源码)_kaic
摘 要 随着社会的发展,出差、旅游成为常态,也就造成民宿短租市场的兴起。人们新到陌生的环境里找民宿一般都是通过中介。中介虽然可以快速找到合适的民宿但会收取大量的中介费用,这对刚到新环境里的人们来说是一笔大的资金支出。也有一些人通…...
vue3开发前端表单缓存自定义指令,移动端h5必备插件
开发背景 公司需要开发一款移动端应用,使用vue开发,用户录入表单需要本地缓存,刷新页面,或者不小心关掉重新进来,上次录入的信息还要存在。 这里有两种方案,第一种就是像博客平台一样,实时保存…...
骗子查询系统源码
源码简介 小权云黑管理系统 V1.0 功能如下: 1.添加骗子,查询骗子 2.可添加团队后台方便审核用 3.在线反馈留言系统 4.前台提交骗子,后台需要审核才能过 5.后台使用光年UI界面 6.新增导航列表,可给网站添加导航友链 7.可添加云黑类…...
目标检测+车道线识别+追踪
一种方法: 车道线检测-canny边缘检测-霍夫变换 一、什么是霍夫变换 霍夫变换(Hough Transform)是一种在图像处理和计算机视觉中广泛使用的特征检测技术,主要用于识别图像中的几何形状,尤其是直线、圆和椭圆等常见形状…...
非wpf应用程序项目【类库、用户控件库】中使用HandyControl
文章速览 前言参考文章实现方法1、添加HandyControl包;2、添加资源字典3、修改资源字典内容 坚持记录实属不易,希望友善多金的码友能够随手点一个赞。 共同创建氛围更加良好的开发者社区! 谢谢~ 前言 wpf应用程序中,在入口项目中…...
【python】flask执行上下文context,请求上下文和应用上下文原理解析
✨✨ 欢迎大家来到景天科技苑✨✨ 🎈🎈 养成好习惯,先赞后看哦~🎈🎈 🏆 作者简介:景天科技苑 🏆《头衔》:大厂架构师,华为云开发者社区专家博主,…...
DDos系列攻击原理与防御原理
七层防御体系 静态过滤 命中黑名单 对确定是攻击的流量直接加入黑名单(源地址命中黑名单直接丢弃,缺乏机动性和扩展性) 畸形报文过滤 畸形报文攻击 TCP包含多个标记位,排列组合有规律 • 现象:TCP标记位全为1 …...
山东日照今日疫情/搜索引擎优化排名技巧
1. 基本概念 光功率计(OPM):是用于测量光信号中的功率的装置,它通常指用于测试光的平均功率(Average Power)dB:表示相对功率 P(dB) 10 log(P/Pref)dBm:表示绝对功率 P(dBm) 10 log (P/1mW) 0dBm&…...
商城移动端网站开发/东莞网站推广大全
引子 今年开始,我在翻译一本大部头的,比较经典的的Python进阶书籍。 有空就翻译几页。这本书不仅是教你很多进阶的Python的语法,更重要的是讲解很多设计方法和设计思想。 这些方法和思想,一点点叠加起来,就会让你从…...
爱情动做网站推荐/官网seo优化找哪家做
本章详细讲解dd命令语法,参数,dd示例用法详解 文章目录前言dd用途参数详解dd 示例总结友情链接前言 dd 用途 dd命令,主要功能为转换和复制文件。 在Linux中,硬件的设备驱动和特殊设备文件 也是文件;dd也可以直接读取或写入到这…...
java 快速建站/新闻最新热点
文章目录一、概述二、开发步骤三、相关的类与接口四、操作例子1. 对数据库进行增/删/改时2. 对数据库进行查询时五、事务管理六、JDBC封装七、创建连接池进行优化一、概述 JAVASE规范:指定Java命令开发时基本规则,比如如何创建一个类,如何实…...
wordpress同步qq空间/宁波seo博客
中国人血白蛋白行业发展分析与投资战略研究报告2022-2028年 详情内容请咨询鸿晟信合研究院! 【全新修订】:2022年2月 【撰写单位】:鸿晟信合研究研究 【报告目录】 第1章:人血白蛋白行业界定及数据统计标准说明 1.1 人血白蛋白的…...