答辩最大的教训
做东西的不如卖东西的
吃一堑长一智
写在前面
根据上一篇的大作业内容,把自己一星期多以来使用到的一些知识点、一些好的博客内容粘贴过来,做一下自己的总结。
主要是自己的C基础也比较差,平常用到一些很简单的知识的时候也会忘,要现查,就很浪费时间。
1.C/C++基础
1.1C++中setw()函数的使用
在C++中,setw(int n)用来控制输出间隔。
例如:
cout<<'s'<<setw(8)<<'a'<<endl;
则在屏幕显示
s a
s与a之间有7个空格,setw()只对其后面紧跟的输出产生作用,如上例中,表示'a'共占8个位置,不足的用空格填充。若输入的内容超过setw()设置的长度,则按实际长度输出。
setw()默认填充的内容为空格,可以setfill()配合使用设置其他字符填充。
如
cout<<setfill('*')<<setw(5)<<'a'<<endl;
则输出:
****a //4个*和字符a共占5个位置。
1.2c++实现按行读取文本文件
#include<fstream> //ifstream读文件,ofstream写文件,fstream读写文件
int main(){
SetConsoleOutputCP(65001);
ifstream in("1.txt");
string line;
if(in) // 有该文件{
while (getline (in, line)) // line中不包括每行的换行符{
cout << line << endl;
}
}
else // 没有该文件{
cout <<"no such file" << endl;
}
system("pause");
return 0;
}
1.3C++读取文件fopen、freopen
fopen
FILE *fp1,*fp2; //定义文件指针类型
fp1=fopen("input.in","r"); //用fopen函数以只读方式(r)打开输入文件input.in;
fp2=fopen("output.out","w");//用fopen函数以写入方式(w)打开输出文件output.out;
fscanf(fp1,"%d",&temp);//fscanf从文件中读取数据,fp1文件指针指定文件;
fprintf(fp2,"%d",temp);//fprintf将数据输出到文件,fp2文件指针指定文件;
fclose(fp1);//关闭文件指针。
fclose(fp2);
freopen
FILE * freopen(const char *filename, const char *mode,FILE *stream);
filename:要打开的文件名;
mode:文件打开的模式,和fopen中的模式(r/w)相同。
stream:文件指针,通常使用标准流文件(stdin/stdout/stderr)
freopen("Mk02.txt", "r", stdin);
cin >> *n >> *m;
1.4 C++map
C++ maps是一种关联式容器,包含“关键字/值”对
1.构造函数
map<int, string> mapStudent;
2.插入元素
// 定义一个map对象
map<int, string> mapStudent;
// 第一种 用insert函數插入pair
mapStudent.insert(pair<int, string>(000, "student_zero"));
// 第二种 用insert函数插入value_type数据
mapStudent.insert(map<int, string>::value_type(001, "student_one"));
// 第三种 用"array"方式插入
mapStudent[123] = "student_first";
mapStudent[456] = "student_second";
3.查找元素
iter = mapStudent.find("123");
if(iter != mapStudent.end())
cout<<"Find, the value is"<<iter->second<<endl;
else
cout<<"Do not Find"<<endl;
4.删除元素
//迭代器刪除
iter = mapStudent.find("123");
mapStudent.erase(iter);
//用关键字刪除
int n = mapStudent.erase("123"); //如果刪除了會返回1,否則返回0
//清空
5.常用函数
mapStudent.clear()
begin() 返回指向map头部的迭代器
clear() 删除所有元素
count() 返回指定元素出现的次数
empty() 如果map为空则返回true
end() 返回指向map末尾的迭代器
equal_range() 返回特殊条目的迭代器对
erase() 删除一个元素
find() 查找一个元素
get_allocator() 返回map的配置器
insert() 插入元素
key_comp() 返回比较元素key的函数
lower_bound() 返回键值>=给定元素的第一个位置
max_size() 返回可以容纳的最大元素个数
rbegin() 返回一个指向map尾部的逆向迭代器
rend() 返回一个指向map头部的逆向迭代器
size() 返回map中元素的个数
swap() 交换两个map
upper_bound() 返回键值>给定元素的第一个位置
value_comp() 返回比较元素value的函数
2.CUDA基础
2.1对新接触CUDA非常友好的教程
详细介绍了CUDA的运行原理和模型,尤其是block, grid, thread, warp, SM的讲解,比较清晰,示例代码比较基础易懂。
https://zhuanlan.zhihu.com/p/34587739