目录
1.如何用 getline 函数读取用户输入的一行
2.如何防止用 scanf 读取字符时读取了 换行和空格
3.map和unordered_map的差别和使用
4.“表达式求值”问题解析
5.运行报RE错误
6.在set或者map里面使用结构体
7.运行时报TLE时,时间复杂度问题
8.double类型的输入和输出
1.如何用 getline
函数读取用户输入的一行
代码源于蓝桥杯演示文档
#include <string>
#include <iostream>
#include <sstream>int main()
{// 问候用户std::string name;std::cout << "What is your name? ";std::getline(std::cin, name);std::cout << "Hello " << name << ", nice to meet you.\n";// 逐行读文件std::istringstream input;input.str("1\n2\n3\n4\n5\n6\n7\n");int sum = 0;for (std::string line; std::getline(input, line); ) {sum += std::stoi(line);}std::cout << "\nThe sum is: " << sum << "\n";
}
输出:
What is your name? John Q. Public
Hello John Q. Public, nice to meet you.The sum is 28
2.如何防止用 scanf 读取字符时读取了 换行和空格
常见错误:
解决方案:scanf(" %c",&c);在%前加空格
解决后:
3.map和unordered_map的差别和使用
map和unordered_map的差别和使用_map和unorderedmap的区别-CSDN博客
4.“表达式求值”问题解析
AcWing 3302. 表达式求值:多图讲解运算符优先级+详细代码注释 - AcWing
5.运行报RE错误
可能存在的问题:
1.在函数里面的数组开太大(原因:数组定义在函数里面会直接在堆栈里面申请空间)。故大数组务必放在函数外面作为全部变量。
2.出现了除0,检查除法有没有可能会导致除0的地方。
3.堆栈溢出,即1或者递归调用次数过多
4.在scanf("%d",a);给a赋值的时候没有加&
5.数组开的小,导致数组下标越界
6.在set或者map里面使用结构体
当我们需要在set和map里面使用结构体的时候,需要对运算符进行重载
下面给出例子:
在结构体外进行运算符重载:
struct Person {std::string name;int age;
};bool operator<(const Person& p1, const Person& p2) {return p1.age < p2.age;
}bool: 这是函数的返回类型,表示返回一个布尔值。
operator<: 这是 < 运算符的函数形式,表示重载了小于运算符。
(const Person& p1, const Person& p2): 这是函数的参数,它们是常量引用类型的 Person 对象,用于比较两个 Person 对象的年龄。
{}: 这是函数体的起始和结束符号,表示函数体内的代码块。
或者也可以采用在结构体内进行运算符重载:
struct Person {std::string name;int age;bool operator <(const Person& p)const{return age<p.age;}
};bool: 这是函数的返回类型,表示返回一个布尔值。
operator <: 这是 < 运算符的函数形式,表示重载了小于运算符。
(const Person& p): 这是函数的参数,它是一个常量引用类型的 Person 对象,表示要与当前对象进行比较的对象。
const: 这是成员函数的修饰符,表示该函数不会修改当前对象的成员变量。
{}: 这是函数体的起始和结束符号,表示函数体内的代码块。
详细关于运算符重载:运算符重载(在c++中使用set、map存储结构体)-CSDN博客
7.运行时报TLE时,时间复杂度问题
写的算法的时间复杂度小于或者等于10^8我们都认为该算法能够在1s之内,故运行时报TLE时,需检查自己写的算法,耗费时间最大的地方的时间复杂度能否优化,改写你的算法
8.double类型的输入和输出
scanf 输入double类型时,必须使用%lf
printf 输出double类型时,使用%lf和%f都可以,但根据C语言标准,应该使用"%f“格式符来输出double类型的值,故推荐大家输出double类型时使用%f