由于acm很多算法模板都在c++的algorithm库中,所以掌握c++是必不可少的一步,并且很多数据结构在c++中使用起来也很方便。
本篇文章记录学习c++中出现的问题:
1.using namespace std;
指明下面的程序使用std空间下的定义
比如
#include <iostream>
using namespace std;
int main()
{
cout << "Hello world!" << endl;
return 0;
}
如果没有using namespace std指明的话就要用std::cout <<“hello world!”<<endl;
std::cout 表示std命名空间下的cout,是分层次的,类似于网址的域名。
2.vector
数组:算法竞赛中,为避免出错,一般用静态数组。能开多大就开多大:
int dp[1000000];
而使用vector有一个好处就是建立动态数组,不宜出错,是个很好的容器。
在使用时,要加上#include
比如定义一个int 型数组:vectora; // 默认初始化,a为空
#include <string.h>
#include <vector>
#include <iostream>
using namespace std;
int main()
{
vector<int>obj;//创建一个向量存储容器 int
for(int i=0;i<10;i++) // push_back(elem)在数组最后添加数据
{
obj.push_back(i);
cout<<obj[i]<<",";
}
for(int i=0;i<5;i++)//去掉数组最后一个数据
{
obj.pop_back();
}
cout<<"\n"<<endl;
for(int i=0;i<obj.size();i++)//size()容器中实际数据个数
{
cout<<obj[i]<<",";
}
return 0;
}
vectorb(a); //用a定义b
vectora(100); //a有100个值为0的元素
vectora(100,6); //100个值为6的元素
定义二维数组:vectora[maxn]; //它的第一维大小是固定的maxn,第二维是动态的。
功能表:
3.#include <bits/stdc++.h>
#include <bits/stdc++.h>包含了全部的C++头文件。
但是目前POJ还不支持<bits/stdc++.h>(G++、C++都不支持)。HDU部分支持(G++支持,C++不支持)。
目前这么多,后面会更新