c++注意事项

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中,
}



class 中,所有属性和方法都默认为private 所以要定义为public


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');

m.erase(it);

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());
}
}


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值