栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

【算法学习】语言基础

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

【算法学习】语言基础

动态数组类型
//初始化一个int型数组nums
vector nums;

//初始化一个大小为n的数组nums,数组中默认都为0
vector nums(n);

//初始化一个元素为1、3、5的数组nums
vector nums{ 1, 3, 5 };

//初始化一个大小为n的数组,其值全部为2
vector nums(n, 2);

//初始化一个二维int数组dp
vector> dp;

//初始化一个大小为m*n的布尔数组dp;
//其中的值都为true
vector> dp(m, vector(n, true));

下面是它的成员函数

//返回数组是否为空
bool empty();

//返回数组的元素个数
size_type size();

//返回数组最后一个元素的引用
reference back();

//在数组尾部插入一个元素val
void push_back(const value_type& val);

//删除数组尾部的元素
void pop_back();

下面举一个例子

#include 
#include 
using namespace std;


int main() {
	int n = 10;
	//数组大小为10,元素值都为0
	vector nums(n);
	//输出false(0)
	cout << nums.empty();
	//输出:10
	cout << nums.size();

	//可以通过方括号直接取值或修改值
	int a = nums[4];
	nums[0] = 11;

	//在数组尾部插入一个元素20
	nums.push_back(20);
	//输出:11
	cout << nums.size();

	//得到数组最后一个元素的引用
	int b = nums.back();
	//输出20
	cout << b;

	//删除数组的最后一个元素(无返回值)
	nums.pop_back();
	//输出10
	cout << nums.size();

	//交换nums[0]和nums[1]
	swap(nums[0], nums[1]);

}

利用索引访问很高效,从尾部增删元素也很高效。而从中间或头部增删元素要涉及迁移数据,很低效,所以要从算法层面避免。

字符串string

常见用法

	string s;
	string s = "abc";

	//返回字符串长度
	size_t size();
	
	//判断字符串是否为空
	bool empty();

	//在字符串尾部插入一个字符c
	void push_back(char c);

	//删除字符串尾部的字符
	void pop_back();

	//返回从索引pos开始,长度为len的子字符串
	string substr(size_t pos, size_t len);

举例说明

#include 
#include 
#include 
using namespace std;


int main() {

	//s是空字符串
	string s;
	s = "abcd";
	cout << s[2];
	s.push_back('e');
	cout << s;
	cout << s.substr(2, 3);
	s += "xyz";
	cout << s;
}
哈希表 unordered_map
	//初始化一个key为int,value为int的哈希表
	unordered_map mapping;

	//初始化一个key为string,value为int数组的哈希表
	unordered_map> mapping;

哈希表的值可以是任意类行,但是键只能是特定类型,一般使用int、string。

常见的成员函数

	//返回哈希表的键值对个数
	size_type size();

	//返回哈希表是否为空
	bool empty();

	//返回哈希表中key出现的个数,可用于判断键是否存在于哈希表中
	size_type count(const key_type& key);

	//通过key消除哈希表中的键值对
	size_type erase(const key_type& key);

常见使用方法

#include 
#include 
#include 
#include 
using namespace std;


int main() {
	vector nums{ 1, 2, 3, 4, 5, 3, 6 };
	//计数器
	unordered_map counter;
	for (int num : nums) {
		//可以用方括号直接访问或修改对应的键
		counter[num]++;
	}

	//遍历哈希表中的键值对
	for (auto& it : counter) {
		int key = it.first;
		int val = it.second;
		cout << key << ";" << val << endl;
	}
}

使用方括号访问键时,若key不存在,则会自动创建key

哈希集合unordered_set
	//初始化一个存储int的哈希集合
	unordered_set visited;

	//成员函数如下

	//返回哈希集合中键值对个数
	size_type size();

	//返回哈希集合是否为空
	bool empty();

	//类似哈希表,如果key存在则返回1,否则返回0
	size_type count(const key_type& key);

	//向集合中插入一个元素key
	pair insert(const key_type& key);

	//删除哈希集合中的元素key,如果删除成功则返回1,如果key不存在则返回0
	size_type erase(const key_type& key);
队列
	//初始化一个存储int的队列
	queue q;

	//其常用成员函数
	
	//判断队列是否为空
	bool empty();

	//返回队列中元素的个数
	size_type size();

	//将元素加入队尾
	void push(const value_type& val);

	//返回队头元素的引用
	value_type& front();

	//删除队头元素
	void pop();

队列简单,但C++不会像其他语言那样pop时返回对应元素
所以一般是这样处理的

int e = q.front();  q.pop();
堆栈stack
	//初始化一个int类型的堆栈
	stack stk;

	//其成员函数

	//返回堆栈是否为空
	bool empty();

	//返回堆栈中元素的个数
	size_type size();

	//在栈顶添加元素
	void push(const value_type& val);

	//返回栈顶元素的引用
	value_type& top();

	//删除栈顶元素
	void pop();
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/955374.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号