关闭

暗黑计划2-数组,位运算,pair

270人阅读 评论(0) 收藏 举报

1 数组

1.1定义某种数组

int pad[10][10]={
    {0},
    {0,1,2,3,4,5,6,7,8,9},
    {0,2,3,5,6,8,9},
    {3,6,9},
    {0,4,5,6,7,8,9},
    {0,5,6,8,9},
    {6,9},
    {0,7,8,9},
    {0,8,9},
    {9,}
};

1.2 同样是定义某个float二维数组

float **p;
p=new float *[n];
for(int i=0;i<n;i++)
   p[i]=new float[m];
for(int i=0;i<n;i++)
    for(int j=0;j<m;j++)
    {
        cin>>p[i][j];
    }

1.3 重新将数组全部初始化为0

memset(vis,0,sizeof vis);

1.4 

子函数(int a,int result[ ])

{

result[0]=1;

result[1]=2;

}

主函数

int main()

{

int fier[3]={0};

}


2.位运算

2.1 交换两个数字

high = low ^ high;
low  = low ^ high;
high = low ^ high;
2.2.dif中有多少个1

int cnt=0;
while(dif!=0)
{
     dif=dif&(dif-1);
}

3.pair的vector对

3.1 pair对,比如记录的是文件和行数string的错误次数int。

vector<pair<string, int>> errors;\\定义
errors.push_back(make_pair(file, 1));\\加入,一个是string还有一个就是int数字
for (int i = 0; i<(errors.size() - 1); i++){\\这个是具体的操作。如果
            if (errors[i].first == file){
                errors[i].second++;
                errors.pop_back(); break;
            }
        }


如果下面要对这个进行从大到小的排序呢

bool compare(pair<string, int> a, pair<string, int> b)
{
    return a.second > b.second;
}
stable_sort(errors.begin(), errors.end(), compare);
对这样一个东西进行输出,要求如果条数大于8条,就输出前8条而且文件名如果超过16,那就输出后16.

int idx = 0;
    while (idx<8 && idx<errors.size())
    {
        string check = errors[idx].first;
        int t = check.find(' ');
        if (t>16)
            errors[idx].first.erase(0, t - 16);\\删除从0开始的,t-16长度的字符
        cout << errors[idx].first << ' ' << errors[idx].second << endl;
        idx++;
    }

3.2 pair也可以进行比大小排序

bool cmp(const pair<string,int>& a,const pair<string,int>& b){  \\定义这个比较小函数
     return a.second>b.second;
}
vector<pair<string,int> > array;\\定义这个pairvector
stable_sort(array.begin(),array.end(),cmp);\\输出
vector<string> ans;
for(int i=0;i<array.size();i++){
        ans.push_back(array[i].first);
        }   

3.3  //map内部本身就是按照key的大小顺序进行存储的,以map的顺序进行输出

        for(map<int,int>::iterator it=m.begin();it!=m.end();++it){
            cout << it->first << " "<< it->second << endl;
        }


4. cmp.可以达到捆绑根据后一个排序。小技巧。

struct score_hour
{
    int score;
    int hour;
};
 
bool cmp(score_hour a, score_hour b)
{
    return a.hour < b.hour;
}
 while(n--){
       cin >> tmp.score >> tmp.hour;
       v.push_back(tmp);
 }
sort(v.begin(),v.end(),cmp);

5.输出,保留小数点数2位

 printf("%.2f\n",dif/2.0);


6.栈

stack<int>s;

s.push();

s.top();

s.pop();








0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:20395次
    • 积分:666
    • 等级:
    • 排名:千里之外
    • 原创:46篇
    • 转载:5篇
    • 译文:0篇
    • 评论:0条
    文章分类
    最新评论