BEYOND

生生不息的人生态度,永远相信美好即将到来

first

这个星期……首先是真的手贱。

之前调好的git方案,然后手贱g了一下,刷没了。

然后重新折腾……结果也没折腾出来,我也忘记当时是怎么搞得了。

所以……暂时就不管了。

反正腾讯云的站点就手动更新一下就可以了费不了多少功夫。

然后,我准备等到11月份,这一台服务器到期之后,就改用腾讯云的静态网页托管的方案,能便宜一点。

之前已经试过了,买了一个月的,如果你现在要访问,静态网页托管站,可以点进去试试。

然后如果你是在五月份或者更后的时间看见这一篇博客的话,那此时上面的网址已经无法打开了,等到11月份这个服务器过期我再给静态网页托管进行续费。

这是让人无语的事情。

然后除此之外,还有没有别的什么事情呢?

当然也是有的。

first-plus

今天星期五,上面的内容是昨天写的。

我忽然想到,我为什么不干脆连静态网页托管也取消掉呢……我这样做是有一点心疼的,因为报审核也花了我不少精力。

但是……一个月15块也挺贵的。

但是报审核,只是等待的时间比较久,实际操作并不复杂,而且估计最近好几年内github都不会放弃github page业务……

这着实是一件让人犹豫的事情。

所以就先这么做吧。

提前向我开了半年的网站说再见

我计划将整个网站都完全托管在Github Page上,在可见的未来内不再犹豫。

2

我之前曾经看过《怪兽屋》、《机械心》、《自杀专卖店》这几部电影。我还记得当时是在万圣节附近,是在电视猫里面的一个万圣节专场免费看电影的活动里看的。

这几部电影名字看起来十分惊悚,画风也非常诡异,但是其实是十分好看的电影,别有一番风味。

3

这周被模电给虐杀了。

很难讲模电难不难,但是确实是不简单的。

I will keep work for it.

4

现在已经是第四周的周一了,现在再来为第三周做一些补充吧。

关于模电

第三周周末花了好几个小时来学模电,然后终于似乎是懂得了一些,什么运放,基础放大电路、反相运算、加法减法运算……

但是感觉花的时间还是不够多,主要体现在很多电路的特点都没有记下来。

现如今第四周开始上前面的PN结的内容了,但是后面的运放我还是要花时间去看看,毕竟……没有几周就到期中考试了。

关于数学

数学也有点难。

但是嘛,难度还好,主要是有一点抽象,计算有点复杂,要花一点心思,但是做题实际上是不难的。

关于消费

决定从这周开始不再每天一瓶可乐和雪碧,这样每天都可以节省3块钱。

有点想买一台电脑,主要是现在这一台电脑到处搬着走确实不重,但是也是要费一点功夫,我期望能买一台十分轻薄的笔记本,方便我到处行走,编写文档,上上浏览器。

但是这……确实也不是必须的,我等着看以后有没有什么优惠吧,我可能会去买一台华为的mate book e,平板式的笔记本,足够轻薄,而且价格尚可,而且本来就是为了编写文档于与浏览器,就相当于上网本一样使用,也就不需要怎么样的性能支持。

关于比赛

这个学期和学长们一起去打嵌入式比赛,昨天学长问我对于比赛项目有什么想法,我表示支持他的一切想法,于是他说我们做机械臂。

好的,那么就做机械臂。

唯一需要注意的事情是安全问题。我对于所有的电子、机械、工厂都心存敬畏,因为这些玩意是真能要了你的命,而且我们都是半桶水的技术,假如不小心,那么出安全问题的可能性更大,所以一定要注意安全,安全才是最重要的。平平安安出门去,平平安安回家来。

哈希表

有的时候,我们需要记录下我们所做的事情,在初学阶段,我们可以使用数组或者容器来进行记录,但是当数据量十分巨大的时候,那么使用哈希表来进行数据的记录会十分方便而且快捷,并且不用担心出现爆栈之类的问题。

在C++中的哈希表实现有三个函数:map,multimap,unordered_map,前面两个函数的实现是利用了红黑树,unordered map的实现是使用了哈希结构直接做映射。

在实际使用中大多数是使用unordered_map,因为使用unordered_map进行查找、删改的效率是最高的。
前面两个函数由于通过在内部实现红黑树的方法来实现哈希表,所以内存占用大,但是在处理一些具有顺序的表的时候更加快速。

unordered_map的使用示例:unordered_map<string,int>mp;//表示键值对由string 映射到 int.
unordered_map函数中常用的成员方法:

at(key)返回容器中储存的键key对应的值,如果key不存在,则会抛出out_of_range异常、find(key)查找以key为键的键值对,如果找到,那么就返回一个指向这个键值对的正向迭代器,反之则返回指向容器中最后一个键值对之后的位置的迭代器(end()) 、count(key)在容器中查找以key作为键的键值对的个数、
emplace() 在容器中添加新键值对,效率比insert()高、

1
2
3
4
5
6
unordered_map<string, int>map;
map["hello"] = 1;
map.emplace("number", 2);
cout << "map[hello] = " << map["hello"] << "map[\"number\"] = " << map["number"] << endl;
out:
map[hello] = 1map["number"] = 2
  • insert() 向容器中添加键值对、
  • erase()删除指定键值对、
  • erase(pos,n); 删除从pos开始的n个字符,比如erase(0,1)就是删除第一个字符
  • erase(position);删除position处的一个字符(position是个string类型的迭代器)
  • erase(first,last);删除从first到last之间的字符(first和last都是迭代器)
  • clear()清空容器、
  • swap()交换两个unordered_map容器储存的键值对,前提是必须保证这两个容器的类型完全相同。
    记录某一个元素出现的次数:
1
2
3
4
5
6
7
8
9
10
unordered_map<int, int>cnt;
for (int i = 0; i < 3; i++) {
int q;
cin >> q;
cnt[q]++;
}
for (auto q : cnt) {
cout << q.first<<"\t"<<q.second<< endl;
}
//q.first就是键,q.second就是值。

以下为文心一言的回答:
/**************************************************************************
当然!以下是几个C++中使用哈希表的例子:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
//例子1:使用unordered_map实现哈希表
#include<iostream>
#include<unordered_map>
int
main(){
std::unordered_map<std::string, int> hashTable; // 添加键值对
hashTable["apple"] = 5;
hashTable["banana"] = 7;
hashTable["orange"] = 3; // 查找键值对
std::cout << "apple: " << hashTable["apple"] << std::endl; // 遍历哈希表
for (constauto& entry : hashTable) {
std::cout << entry.first << ": " << entry.second << std::endl;
}
return 0;
}
//例子2:自定义哈希函数
#include<iostream>
#include<unordered_map>// 自定义哈希函数
structHashFunction {
std::size_toperator()(const std::pair<std::string, int>& key)const{
std::size_t hash = 0;
for (constauto& c : key.first) {
hash += std::hash<char>()(c);
}
return hash ^ (key.second << 1); // 或使用boost::hash_combine (需要包含boost/functional/hash.hpp)
}
};
int
main(){
std::unordered_map<std::pair<std::string, int>, std::string, HashFunction> hashTable;
// 添加键值对
hashTable[{{"apple", 5}}] = "red";
hashTable[{{"banana", 7}}] = "yellow";
hashTable[{{"orange", 3}}] = "orange";
// 查找键值对
std::cout << hashTable[{{"apple", 5}}] << std::endl;
// 遍历哈希表
for (constauto& entry : hashTable) {
std::cout << entry.first.first << ", " << entry.first.second << ": " << entry.second << std::endl;
}
return 0;
}

这些例子演示了如何使用unordered_map容器来实现哈希表,并在其中存储和访问键值对。第一个例子使用了默认的哈希函数,而第二个例子自定义了哈希函数。这只是C中实现哈希表的简单示例,实际上还有更多的用法和扩展可以探索。请注意,为了运行这些示例,您需要编译器支持C11或更高版本。

0%