c++速成笔记
可变数组
#include <iostream>//读写
#include <vector>
using namespace std;
int main()
{//可变数组
vector <int> vNums(2);//关键1
vNums[0]=11;
vNums[1]=2;
vNums.push_back(3);//关键2
cout<<"Vector Size:"<<vNums.size()<<endl;
//输出数组长度
return 0;
}
可变字符串,字符串输出,赋值
#include <iostream>//读写
#include <string>//字符串
#include <vector>
#include <sstream>
//#include<bits/stdc++.h>
using namespace std;
int main()
{
vector <string> words;
stringstream ss ("Some Random Words");
string word;
while(getline(ss,word ,' '))
//ss复制到word上 遇到空格暂停
{
words.push_back(word);//复制到尾部后面
}
for(int i=0;i<word.size();i++)
{
cout<< words[i]<<endl;
}
return 0;
}
//创建随机数
srand(time(NULL));
字符串
#include <iostream>//读写
#include <string>//字符串
#include <vector>
#include <sstream>
#include<bits/stdc++.h>
using namespace std;
int main()
{
string str1 = "I,m a string";
cout << "let : "<< str1[0] << endl;
// cout << "Last : " << str1.back() << endl;
//
cout << "Length : "<< str1.length() << endl;
//获取字符串长度
string str2 = str1;
//完全复制
string str3(str2, 4);
//复制str2前 4 位 到str3
string str4 = str1 + " and your not ";
//字面意思
str4.append("!");
//在str4后面加上 !
cout <<"New String :" <<str4 << endl;
//输出
str4.erase(12,str4.length() - 1);
//没听懂,关于删除的
cout <<"New String : " <<str4 << endl;
//
if(str4.find("string")!=string::npos)
//find str4中有没有string 并且返回位置(数字)
//npos字符串的最后一个字符位置
cout<<"String Index:"<<
str4.find ("string")<<endl;
//输出位置(数字)
cout << "Substring : "<<str4.substr(6,7) <<endl;
//获取字串,从第六个字符,长度是7
string strNum = to_string(1+2);
//将整数转化为字符串
cout << "I,m a String : " <<strNum<<endl;
char letterZ = 'z';
char num5 = '5';
char
return 0;
}
数学函数
引用运算符号
共享地址
指针只是存储了地址
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include<bits/stdc++.h>
using namespace std;
void AssingnAge(int *age)
{
*age=18;
}
int main()
{
int age = 43;
AssingnAge(&age);
cout <<age<<endl;
return 0;
}
函数宏
#include <iostream>
#include <string>
#include <vector>
#include <sstream>
#include<bits/stdc++.h>
using namespace std;
#define PI 3.1415926
#define AREA_CIRCLE(radius) (PI * pow(radius , 2))
int main()
{
cout << "Circle Area"<<
AREA_CIRCLE(5)<<endl;
return 0;
}
模板函数
template <typename T>
容器
双端队列
一个两端膨胀或收缩的动态数组
#include<bits/stdc++.h>//万能头
#include <deque>//双端队列头
#include <iterator>//遍历头
using namespace std;
int main()
{
deque<int >nums={1,2,3,4};
nums.push_front(0);//在头部添加0
nums.push_back(5);//在尾部添加5
for(int x:nums) cout << x<<endl;//遍历输出所有元素
cout<<nums[0]<<endl;//像普通数组一样单独输出
return 0;
}
迭代器
用于指向容器内存地址
#include <bits/stdc++.h>
using namespace std;
int main()
{
vector<int > nums= {1,2,3,4};
vector<int>::iterator itr;
for(itr = nums.begin();
itr<nums.end();
itr++)
//itr从nums开头遍历到尾
{
cout<<*itr<<endl;//注意*
}
vector<int> ::iterator int2 = nums.begin();
//定义迭代器,并初始化为在nums开头
advance(itr2,2);//itr2迭代器每次向后移动2格
cout<<*itr2<<endl;
auto itr3 = next(itr2,1);
cout<<*itr3 <<endl;
auto itr4 = prev(itr2,1);//退回一个itr2
cout<<*itr4<<endl;
vector<int >nums3 ={1,4,5,6};
vector<int> nums4 ={2,3};
auto itr5 =nums3.begin();
advance(itr5,1);
copy(nums4.begin(),nums4.end(),//copy
insert(nums3,itr5));
for(int &i:nums3)
cout<<i<<endl;
return 0;
}