4.25学习笔记 哈希表

1.找元素速度快,但可能发生哈希冲突

一般哈希表都是用来快速判断一个元素是否出现集合里。

哈希冲突的解决?

2.Multimap和map的操作类似,唯一区别multimap键值可重复

multiset

3.利用auto减少打字

我们都是用auto这个关键字来代替一个具体变量的类型定义,让编译器自己去寻找和从它的初始化过程中来推演这个变量的类型。最著名的关于auto的用法恐怕莫过于用它来躲开一堆长长的类型名,比如STL容器的iterator,但是它也可以有其他用处:

 std::vector<int> nums;
 for(auto iter = std::begin(nums); iter != std::end(nums); iter++) {
   auto& n = *iter;
   n = someFunction();
 } 

在上边这个例子中,iter就被推演为类型std::vector<int>::iterator,然后n的类型被推演成int&。需要注意的是n被显式地声明为引用类型,否则他就是int类型了。

C++干货系列——谈谈在变量中使用auto - 知乎 (zhihu.com)

4.(fn+右键等于end键 )

光标定位到行首,再按shift+end 选中一行

home+shift+向下箭头,1,小窗,2,收起页面

选中多行:shift+上键或下键

5.优化统计字符串的是否是独立单词的优化思路

出现数组就加一,再出现数组就减一,如果数组最后不全为0,肯定就不咯

6.c++输入输出流?

(81条消息) 【C++】输入输出流(IO流)_c++输入输出流_山舟的博客-CSDN博客

标准输入输出流cin,cout

文件流fstream

void WriteFile()
{
    //类似于C语言的用法
    //ofstream ofs("write.txt");
    //ofs.put('h');
    //char msg[] = "ello world";
    //int size = sizeof(msg);
    //ofs.write(msg, size);
    //可调可不调,因为ofs出了作用域后析构函数会自动调用
    //ofs.close();

    //C++的新用法
    ofstream ofs("write.txt");
    char c = 'h';
    string str = "ello world";

    ofs << c << str;//这样就如同文件流一样输出了helloworld
}
 

字符流sstream

是反的 输入是《

stringstream ss;

ss << a << " " << b;

输出:

#include <sstream>
#include <iostream>

using namespace std;

struct ServerInfo
{
    string ip;
    int port;
};

int main()
{
    stringstream ss;
    ServerInfo info = { "192.0.0.1",8081 };

    ss << info.ip << " " << info.port;
    
    //将s中的内容又写入newInfo中
    //注意:不同项的内容必须以空格或换行结尾,这是C/C++都要求的
    ServerInfo newInfo;
    ss >> newInfo.ip >> newInfo.port;

    return 0;
}
sstream的更多高级应用

(1).把其他类型转化为string类型

(2).实现选择性读取不同的数据类型

(82条消息) sstream用法_南方以北的博客-CSDN博客

7.cin,cout效率不如scanf等?加上即可提升

(81条消息) C++之sync_with_stdio(false)_赵大宝字的博客-CSDN博客

在代码里加上std::ios::sync_with_stdio(false) 这个语句后,cin(cout)速度就会变得和scanf(printf)一样快

eg

  1. std::ios::sync_with_stdio(false);

  2. for (int i = 0; i < 100000; i++){

  3. cout << i << endl;

  4. }


ios::sync_with_stdio(false);
cin.tie(0);
cout.tie(0);
同时在默认的情况下cin绑定的是cout,每次执行<<操作符的时候都要调用flush,这样会增加IO负担。可以通过tie(0)来解除cin与cout的绑定,进一步加快执行效率。
 

但是用了sync_with_stdio(false)之后不能与printf和scanf同用,否则会出错,这就涉及到sync_with_stdio(false)的局限性。

因为本来这个函数存在就是可以使cout和printf不冲突

8.输入重定向是什么呢?

那么,什么是重定向呢?在默认情况下,cin 只能接收从键盘输入的数据,cout 也只能将数据输出到屏幕上。但通过重定向,cin 可以将指定文件作为输入源,即接收文件中早已准备好的数据,同样 cout 可以将原本要输出到屏幕上的数据转而写到指定文件中。 

 9.迭代器的使用?见之前stl学习的文章

课堂5,9日

10.题1 :输入n个元素组成的序列S,请找出一个乘积最大的连续子序列

深搜?

11. 枚举,先减少循环层数,再减少循环变量的范围(数字分析),(逆向思想)

典例

石头移动问题 (二分枚举)_石头距离问题_yi__cao的博客-CSDN博客

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值