在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
大型项目开发,要有很多头文件。只能写声明,不能定义(类定义和常量定义可以)。 自己新建头文件(类定义,外部变量声明,函数声明)。源文件包含对应的头文件。 头文件里写类的声明,源文件里写类的定义,类的所有成员。 为避免预处理重复拷贝,头文件保护符。防止多重包含。 2、命名空间(16th)注意:头文件里不能使用using声明,用的话直接写全。 3、标准库string类型(17th)字符容器
using std::string; si种初始化方法:()小括号是调用string对象的构造函数。 先初始化后再赋值,别这么写。
4、cin读入特点,遇空格暂停cin>>name,也可以忽略掉前面的格式,如换行、空格、Tab。 遇空格暂停,但空格还在输入流里。下一次读取时,再次对前段格式处理,忽略空格。 改为使用getline(cin,name); //在VS中使用cin>>会闪退,原因未知,用getline就正常。 #include "stdafx.h" #include<iostream> #include<string> using namespace std; int main() { string name; cout <<"input sth" << endl; //cin>>name; getline(cin,name); cout << name << endl; getchar(); return 0; } 需要在cin>>后面加上cin.ignore(): cin>>name; 5、循环读入循环读入,一次读入一行。 Win+z结束。输入重定向<。 一次读入一个单词,循环读入。 6、string类型的操作。.size(),.empty()7、字符串拼接操作,+号两边必须有一个是string类型的!循环读入并拼接: 8、string下标操作
循环操作string 、 使用C中的函数:但要加上头文件#include<cctype> 实现忽略标点符号的输出。 9、vector动态数组、类模板#include<vector>;using namespace std; 可以使用下标索引。.push_back()尾部加数据。 vector<int> ivec; 初始为空,不可以通过下标操作添加数据。(1.初始就给长度;2.先cin>>temp,后再push) vector<int> ivec(10); 其下标索引类型与string相似,size_type。 vector<int>::size_type index=1; 循环读入数据进vector 计算首尾两个数之和:
练习代码,这种循环读入形式需以ctr+Z结束。 #include "stdafx.h" #include<iostream> #include<string> #include<vector> using namespace std; int main() { cout<<"Input sth.:"<<endl; string str; vector<string> ivec; while(cin>>str){ ivec.push_back(str); } //cin.ignore(); //ivec.push_back(str); cout<<ivec[0]<<endl; getchar(); return 0; }
循环读入单词并输出:判断长度要用.size()。 #include "stdafx.h" #include<iostream> #include<string> #include<vector> using namespace std; int main() { cout<<"Input sth.:"<<endl; string str; vector<string> ivec; while(cin>>str){ ivec.push_back(str); } // for(vector<string>::size_type ix=0;ix!=sizeof(ivec);ix++) for(vector<string>::size_type ix=0;ix!=ivec.size();ix++) { cout<<ivec[ix]<<endl; } cout<<"sizeof:"<<sizeof(ivec)<<endl; cout<<".size():"<<ivec.size()<<endl; //cin.ignore(); //ivec.push_back(str); getchar(); return 0; } ; 10、iterator迭代器,不用下标遍历很多容器没法用下标,但所有容器都有迭代器。 迭代器实际上是一个指针,通过解引用(*)修改数据和读取数据。 常迭代器: 11、四个二进制一组即16进制四个一组后,权值向前递次乘16。 十六进制数,可小写可大写。后面接H或前面加0x。 一个字节=8位二进制。 12、bitset<num>处理二进制头文件! 下标计数为倒序,从0开始。 初始化,可以使用字符串。 也可以使用键盘输入来初始化: .any();判断是否有1 .none();判断是否全是0 .count();计数1 .size()-.count();计数0 set(index)变成1,reset()把某位变成0,flip()翻转。 二进制变成十进制: 13、bitset应用-埃拉托斯特尼_筛法-寻找质数先全初始化为1,然后从头开始向后筛选,遇倍数则置0。.count()可以统计质数个数,貌似应该-1。 然后循环输出即可:
改进1,只筛到根号即可。改进2,从平方处开始筛。 #include<cmath> 500万都没问题。
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论