C++编译过程:
g++ -o Test.ii -E Test.cpp
将.cpp转换成预处理文件.ii,即处理#inclide
g++ -o Test.s -S Test.ii
将预处理文件.ii转换成汇编文件.s
g++ -o Test.o -c Test.s
将汇编文件.s转换成二进制文件.o
g++ -o Test.exe Test.o
将二进制文件.o转换成可执行文件.exe
vector容器:
//迭代器:
#include <vestor>
vector<int> v={1,2,3};
vector<int>::iterator i;
for(i=v.begin();i!=v.end();++i){}
//排序
#include <algorithm>
sort(v.begin(),v.end());
resort(.begin(),v.end());
指针:
void*指针同样存放内存地址,但指向的内容类型不确定。
char *test;
cout<<test<<endl
会输出字符串而不是地址,因为char指针默认输出字符串。
解决方法:
cout<<(void*)test<<endl
计算机相关:
存储器:
内部存储器:
主存(随机访问存储器(RAM))【断电丢失】,只读存储器(ROM)【断电不丢失】
外部存储器:
硬盘,U盘……
short int(2字节)取值范围:
1000000000000000~01111111111111111
转换为十进制:-32768(2^15)~+32767(2^15-1)
有符号二进制数负数的符号位可以当做数值位,故最负的数为在1000000000000000
定位文件流指针所在位置:
ifstream in("test.txt");
//移动至文件末尾
in.seekg(0,ios::end);
//定位指针位置
streampos sp=in.tellg();
获取系统时间:
#include<time.h>
char* get_time() {
char* system_time;
char* temp;
time_t t_t = time(NULL);
strftime(system_time, sizeof(system_time), "%Y-%m-%d-%X-%A", localtime(&t_t));
return system_time;
}
类型转换:
/*字符串转换成字符指针*/
char* str_to_c(string& str)
{
char *result = &str[0];
for (int i = 1; i < str.length() + 1; i++)
{
*(result + i) = str[i];
}
return result;
}
字符串转换成整型,浮点型:
//浮点型
f=atof(str);
//整型
i=atoi(str);
map容器按value排序:
map集合默认是以key排序的,但因为key是不能重复的,当插入相同key的值时该key之前的值会被替换掉,但有时我们需要用key来排序但为了解决不可重复问题,将其作为value,然后通过value的值既原先的key来排序
实现如下:
#include<vector>
#include <algorithm>
map<int, int> maps;
map<int, int>::iterator it;
struct CmpByValue {
bool operator()(const pair<int,int>& lhs, const pair<int, int>& rhs) {
return lhs.second < rhs.second;
}
};
void main(){
maps.insert(pair<int,int>(1, 10));
maps.insert(pair<int, int>(2, 13));
maps.insert(pair<int, int>(9, 4));
maps.insert(pair<int, int>(7, 5));
it =maps.begin();
vector<pair<int, int>> vectors(maps.begin(),maps.end());
sort(vectors.begin(), vectors.end(), CmpByValue());
for (int i = 0; i < vectors.size(); i++) {
cout << vectors[i].first << endl;
}
}
9 7 1 2
整形转换成字符串
to_string()
字符串转换成字符数组
//char[],const char*
strcpy_s(cs, e.c_str());