set(c++)
set(c++)在C++中,set 是一个标准库容器,属于 std 命名空间,通常用于存储唯一的元素,并自动按照升序或自定义的顺序排序。它的底层实现通常基于红黑树(或类似的平衡二叉树)。set 中的元素是唯一的,并且不允许修改(即元素不可重复插入和修改)。以下是常用的 set 方法及其详细解释: 1. insert()insert() 用于向 set 中插入元素。如果元素已经存在,insert() 不会插入新元素,并且返回一个指示插入结果的对(iterator, bool)。 1234std::set<int> mySet;mySet.insert(10);mySet.insert(20);mySet.insert(10); // 插入失败,因为 10 已经存在 2. erase()erase() 用于删除一个指定的元素。它可以接受一个元素值或一个迭代器作为参数。 通过元素删除:删除指定的元素。 通过迭代器删除:删除指定位置的元素。 1234std::set<int> mySet = {10, 20,...
unordered_map(c++)
unordered_map(c++)std::unordered_map 是 C++ 标准库中提供的一个哈希表容器,具有快速的查找、插入和删除操作。它存储键值对,并且支持基于哈希函数的快速查找,适合用于不需要顺序访问的场景。 常用方法及其详细讲解:1. insert 功能: 向 unordered_map 中插入一个新的键值对。 语法: 12unordered_map[key] = value; // 直接插入unordered_map.insert({key, value}); // 另一种插入方式 返回值: 如果使用 insert,它会返回一个 pair<iterator, bool>,其中 iterator 指向插入的元素,bool 表示插入是否成功(如果键已存在则为 false)。 示例: 123std::unordered_map<int, std::string> umap;umap.insert({1, "apple"});umap[2] =...
unordered_set(c++)
unordered_set(c++)unordered_set 是 C++ 标准库中的一个容器,属于 std 命名空间,和 set 类似,但与 set 不同的是,unordered_set 中的元素没有任何排序。unordered_set 的底层实现基于哈希表,因此它能够提供常数时间复杂度的插入、删除和查找操作(在最坏情况下为线性时间复杂度)。不过,由于没有排序,元素的遍历顺序是无序的。 1. insert()insert() 用于向 unordered_set 中插入一个元素。如果元素已经存在,insert() 不会插入新元素,并且返回一个指示插入结果的对(iterator, bool)。如果插入成功,返回的布尔值为 true;如果元素已经存在,返回 false。 1234std::unordered_set<int> mySet;mySet.insert(10);mySet.insert(20);mySet.insert(10); // 插入失败,因为 10 已经存在 2. erase()erase() 用于删除 unordered_set...
算法-二分查找详解[多语言实现]
算法-二分查找详解[多语言实现]二分查找(Binary Search)是一种高效的查找算法,常用于有序数组或序列。根据循环条件和区间定义的不同,二分查找可以有多种写法,主要包括以下四种: 1. 闭区间 [left,right]搜索区间是闭区间 [left, right] 代码模板:c++: 1234567891011121314151617int binary_serach(vector<int>& nums, int target) { int left = 0; int right = nums.size() - 1; // 定义闭区间 [left, right] while (left <= right) { // 区间不为空时继续查找 int middle = left + (right - left) / 2; if (nums[middle] == target) { return middle; } else if (nums[middle] < target)...
Go
Go开始1234567package mainimport "fmt"func main() { fmt.Println("hello world")} 123456789101112要运行这个程序,先将将代码放到名为 hello-world.go 的文件中,然后执行 go run$ go run hello-world.gohello world如果我们想将程序编译成二进制文件(Windows 平台是 .exe 可执行文件), 可以通过 go build 来达到目的。$ go build hello-world.go$ lshello-world hello-world.go然后我们可以直接运行这个二进制文件。$ ./hello-worldhello world 变量123456789101112131415161718192021package mainimport "fmt"func main() { // var 声明 1 个或者多个变量。 var a =...
数据结构课程设计
...
算法-排序详解[多语言实现]
算法-排序详解[多语言实现]一.冒泡排序1.最常见的写法: 最基础的冒泡排序实现 c++: 12345678910void bubbleSort(vector<int>& arr) { int length = arr.size(); // 减少消耗 for (int i = 0;i < length - 1;i++) { for (int j = 0;j < length - 1 - i;j++) { if (arr[j] > arr[j + 1]) { swap(arr[j], arr[j + 1]); } } }} JavaScript: 12345678910function bubbleSort(arr) { let length = arr.length for(let i=0;i<length-1;i++) { for(let j=0;j<length-1-i;j++)...
字符串
字符串一、字符串的基本定义与特性1. 定义方式 双引号:"hello" 单引号:'hello' 反引号(模板字符串):hello 2. 字符串的不可变性 字符串是不可变类型,一旦创建就无法更改其内容,只能生成新的字符串。 123let str = "hello";str[0] = "H"; // 无效console.log(str); // "hello" 3. 字符串与 Unicode JavaScript 使用 Unicode 编码,每个字符占用 2 个字节。 可以使用转义字符表示特殊字符,例如: 1let str = "Hello\u0041"; // "HelloA" 二、字符串的常用操作1. 字符串的长度 使用 .length属性获取字符串的长度: 12let str = "hello";console.log(str.length); // 5 2....
数学
数学罗马数字罗马数字是一种古老的数字表示方法,起源于古罗马,至今仍在一些特定场合被使用,比如钟表、书本章节、电影序列号等。罗马数字使用几个基本符号来表示不同的数值,这些符号包括: 基本罗马数字符号及对应值: 罗马数字 阿拉伯数字 I 1 V 5 X 10 L 50 C 100 D 500 M 1000 罗马数字的书写规则: 重复表示加法:相同的数字连写,其值等于这些数字相加。例如: II = 1 + 1 = 2 III = 1 + 1 + 1 = 3 小数字在大数字右边表示加法:如 VI = 5 + 1 = 6,XV = 10 + 5 = 15。 小数字在大数字左边表示减法:如 IV = 5 - 1 = 4,IX = 10 - 1 = 9。 同一数字不能连续重复超过三次:例如,4 不写作 IIII,而是写作 IV;9 不写作 VIIII,而是写作 IX。 从左到右按数值从大到小排列,例如: LXVIII =...
递归
递归 给你一个整数 n,请你判断该整数是否是 2 的幂次方。 1如果一个数是2的n次幂,那么,这个数换算成二进制,一定是最左边是1,其他位是0的形式 比如4,它的二进制是100,8的二进制是1000 n-1的二进制,一定是n的每一位取反,也就是1变成0,0变成1 比如7的二进制是0111,3的二进制是011 123var isPowerOfTwo = function(n) { return n > 0 && (n & (n - 1)) === 0;};