WUT&ACM:语法进阶&STL

博客主要介绍了C++中C没有的基础内容,包括引用、函数默认参数、对象与类、STL库、运算符重载、迭代器和fread等。如竞赛用C++17的相关用法,类模板的特点,STL库中各种函数的使用等。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

先基础: C++中 C没有的;

竞赛用C++17

#include<bits/std++.h>标准命名空间  -->   无需再打"std::" std::swap();

cout << arr[i]<<" \n"[i == 2] //i==2时换行 ,else 输出空格

cout.flush();//刷新缓冲区 (交互题maybe会用到)

//取消同步流可能会卡在某个地方,无法输出,所以需要刷新缓冲区

getline(cin,s);

stringstream  ss(s);        //传递  

getline(cin,s, ',');        getline 可加分隔符","    输入时"a b c ....."  "a,b,c,d....."都可

引用

int a =10;
int& ref =a;//自动转换为int* const ref = a;指针常量是指针指向不可改,也说明为什么引用不可更改
//ref为 指针变量,
ref =20;//内部发现ref是引用,自动帮我们转换为; *ref = 20;

常量指针   const在前  const int* ref  指针常量 --常量的指针,指向常量的指针

                可改方向

swap(int& a,int& b){}    内交换,外面就交换

函数

默认参数

void build (int u, inr v =1,r =10000)    函数可赋初始值,赋值在后,后面也必须全赋上初始值

若传相应的参数,覆盖相应的默认参数

对象&类

add(int a,int b){
    return a+b;    //只能对int用
}

template <class T>
T add(T a,T b){
    return a + b;    //任意变量
}

template  声明创建模板

class 类  可以用typename代替

类模板
类模板没有 自动类型推导 的使用方式(c++17后增加了类模板类型推导

类模板在模板参数列表中 可有默认参数

template <class T = int, int N =1000>  默认数据类型&变量值;

STL库

swap();不用手写,库中自带.  底层实现也是一个模板函数...

min();max();

cout<<min({2,3,4,5})         多值

abs();  绝对值

sqrt();

atan2(1,1);   角度  返回弧度 PI/4

max_element()        求一个数组中的最小值;

int a[]={2,3,1};
int minx = *min_element(a,a+3)//a-->a+3 初 -->数组末
cout<< minx << endl;

prev_permutation()   next_permutation ()   全遍历O(n!),单次最坏O(n)

__gcd()           gcd()C++内定,最大公约数        lcm() --最小公倍数

__lg(10)                       对传入的数log2 10  ,(2进制下有多少位)

运算符重载

sort();从小到大排序

从大到小 重载<

bool operator < (const Node& B) const {  //const  通用?这老师也没讲清...   记住啊记住
return w < B.w;

}

sort(a,a+10);        也可以传迭代器

迭代器

不是指针,似指针.模拟指针功能.

string 内部封装了一个类

《黑马》——C++提高编程_黑马程序员c++讲义_Netfishless的博客-CSDN博客

构造函数原型:

  • string(); //创建一个空的字符串 例如: string str;
    string(const char* s); //使用字符串s初始化
  • string(const string& str); //使用一个string对象初始化另一个string对象
  • string(int n, char c); //使用n个字符c初始化
  • 尾插 — push_back
  • 尾删 — pop_back
  • 插入 — insert (位置迭代器)  //比前面俩个慢,每个项都要往后移动

vector 预留空间

fread

 

#include <stdio.h>
#include <string.h>
 
int main()
{
   FILE *fp;
   char c[] = "This is runoob";
   char buffer[20];
 
   /* 打开文件用于读写 */
   fp = fopen("file.txt", "w+");
 
   /* 写入数据到文件 */
   fwrite(c, strlen(c) + 1, 1, fp);
 
   /* 查找文件的开头 */
   fseek(fp, 0, SEEK_SET);
 
   /* 读取并显示数据 */
   fread(buffer, strlen(c)+1, 1, fp);
   printf("%s\n", buffer);
   fclose(fp);
   
   return(0);
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值