C++基础知识

一.调试运行部分

1.类内函数需要实例化对象才能在类外中主函数访问

class Solution;
bool isAnagram(string, string);
class Solution {
public:
	bool isAnagram(string s, string t) {
		int hash[26] = { 0 };
		int s_size = s.length();
		int t_size = t.length();
		for (int i = 0; i < s_size; i++)
		{
			hash[s[i] - 'a']++;
		}
		for (int j = 0; j < t_size; j++)
		{
			hash[t[j] - 'a']--;
		}
		for (int i = 0; i < 26; i++)
		{
			if (hash[i] != 0)return 0;
		}
		return 1;
	}

};

int main() {
	string s = "rat";
	string t = "cat";
	Solution solution;//若缺少这行会报错
	int res = solution.isAnagram(s, t);
	printf("%d", res);
	return 0;
}

二.基础数据结构部分

1.string

string类似C语言中的数组,只是声明操作起来更方便,需要引入iostream头文件

string s0="hello";
string s1="world!";
string s=s0+s1;
printf("%s",s.c_str());

结果是"helloworld!"不会补充空格,可以更方便的实现字符串的拼接,用printf打印时需要用c_str方法将string类型转换成const char*类型,才可打印

    string s2;
    scanf("%s",s2.c_str());
    cin >> s2;
    getline(cin,s2);
    printf("%s",s2.c_str());

string类型在接收字符串时,可用scanf(也需要用c_str转换类型)和cin,但是遇到空格就会停止读取,而getline函数可读取整行的输入内容,不会被空格打断

    string s2;
    scanf("%s",s2.c_str());
    cin >> s2;
    getline(cin,s2);
    printf("%s",s2.c_str());

lenth函数可测量字符串长度,substr有两种用法,一个参数与两个参数,上函数运行结果为

2.set(unordered_set,multiset)

set是哈希表的常用数据结构,使用需要引入头文件set,其中定义与数组vector相似,因为集合中的元素不重复且个数不定,所以初始化时候后面不加任何参数,insert是向集合中添加元素,set会自动去掉重复的元素并将集合内的元素从小到大排好序

set <int> s;
s.insert(1);

关于set,C++ 给提供了如下三种可用的数据结构:

  • set:对内部元素从小到大排序,不可重复
  • multiset:对内部元素从小到大排序,可重复
  • unordered_set:读写效率最高,内部元素无序,不可重复

作哈希表用查找集合中有无所需元素时需要用到find函数,它的返回值是一个bool类型,其中s.find(2)的含义是从集合的开始找 2 这个元素一直找到末尾,这个值是一个指针类型,s.end()是集合最后一个元素的下一个位置,如果集合中不存在 2 这个元素,指针最后就会移动到这个位置,也就会与s.end()相等了
s.erase是删除集合中元素的函数

if(s.find(2)!=s.end())
	printf("in");
else
	printf("not in");
	
s.erase(1);

set初始化vector和用vector初始化set

unordered_set<int> s(nums1.begin(), nums1.end());
//用vector初始化set
vector<int>(res.begin(), res.end());
//用set初始化vector

3.map(unordered_map,multimap)

map是哈希表常用的数据结构,使用需要引入头文件map,定义map名字后面无任何参数,格式为map<key,value> m,会按照键的从小到大排序
添加元素有几种常用的方式

unordered_map<string, int> m;
m["hello"]=2;//添加一个key=“hello”,value=2的键值对
m.insert({{"hello",2}});
m.insert(pair<string,int>("hello",2));

查找方式与set类似,都是find函数,其查找的参数是key

m.find("hello")=m.end()//值为1,就是找到了"hello"

4.vector

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值