CUDA基础学习(二)——大作业知识汇总

答辩最大的教训

做东西的不如卖东西的

吃一堑长一智

写在前面

根据上一篇的大作业内容,把自己一星期多以来使用到的一些知识点、一些好的博客内容粘贴过来,做一下自己的总结。
主要是自己的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

2.2

3.大作业算法

3.1遗传算法

https://www.jianshu.com/p/ae5157c26af9

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。