vector:
一维vector时,虽然说可以自己增加大小,但要通过push_back实现,不能像数组一样直接访问赋值,当然,可以提前设置大小,便能够像数组一样访问。
vector<int> v;
v[1]=1;//wrong;
v.push_back(1);
vector<int>v1;
v1=vector<int>(5,0);//大小为5,初始值为1
v1[1]=1;//right
二维vector时,若不提前设置大小,则需要像java中list<list<Integer>> 像通过定义一个一维的vector 进行赋值,然后将一维的vector插入到二维的vector中去。
vector<vector<int>> v;
vector<int> t;
t.push_back(1);
v.push_back(t);
v=vector<vector<int>>(5,vector<int>(5,0));//类似数组v[5][5];
v[1][1]=1;
string:
string::substr(int start, int length);
string 有append方法,所以说c++中的string类型是可以改变的
可以通过[]运算符直接访问
int ->string : to_string(int);
string 转为char数组, 并由数组分割字符串:
std::string str ("Please split this sentence into tokens");
char * cstr = new char [str.length()+1];
std::strcpy (cstr, str.c_str());
// cstr now contains a c-string copy of str
char * p = std::strtok (cstr," ");
while (p!=0)
{
std::cout << p << '\n';
p = std::strtok(NULL," ");
}
delete[] cstr;
字符串另外一种分割字符串的方法:
stringstream sen(sentence);//sentence 为待分割字符串,将其变成字符串流
string token;
while(getline(sen,token,' '))
{
//以空格为分割符,分割出的每一个保存在token中,
}
queue :
定义:queue<Type> q; 方法:front()\pop()\push()\back()\size()\empty();
pair:
定义:pair<Type,Type> p; p=make_pair(v1,v2); first(),second();
map按照key排序,unordered_map 无序:
map<Type,Type> m;
查找key或者判断是否存在key:定义一个iterator map<Type,Type>::iterator it=m.find(key);
if(it==m.end()) 代表不存在;
若存在并且获得value Type2 value=m.find(key)->second;
然后想插入一个元素或更改某个key的value 可以 m[key]=value 新值或者更新都可以; 或者插入新值 m.insert(pair<Type,Type>(key,value));
遍历:for (map<int,vector<int>>::iterator it=m.begin(); it!=m.end(); ++it) it 就代表一个(key,value);
删除:m.earse(key) 或者根据iterator it
it=mymap.find('b');
sort:
比如sort vector 首先传入的是vector.begin() , vector.end(), 然后如果想重新排序,再加上排序函数,自己写一个,名字随便,比如comp; 然后重新写一个函数,bool comp(const Type1& t1,const Type1& t2){ ....... }
但是在算法中,在class里重写sort中的比较函数,要通过创建一个class实现。
class com{
public:
bool operator()(const pair<string,int>& a,const pair<string,int>& b)
{
if(a.second==b.second) return a.first.compare(b.first);
else
return a.second>b.second;
}
};
class solution{
public:
void func(){
vector<pair<string,int>> v;
sort(v.begin(),v.end(),com());
}
}