C++容器学习,与结构体排序和set来一场邂逅

时间:2021-10-30 08:55:37

最近学习C++容器,积累一下。下面介绍set和multiset,并使用sort对结构体进行排序。C++之路漫漫其修远兮!

一、对结构体进行排序

// sort_struct.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include <iostream>
#include <vector>
#include <algorithm>

using namespace std;

typedef struct example
{
    int elem1;
    char elem2;
}example;

bool comparison(example a,example b){
    return a.elem1>b.elem1;
}

int main()
{
    int N;
    cin>>N;

    vector<example> array(N);

    for(int i=0;i<N;i++)
    {
        cin>>array[i].elem1>>array[i].elem2;
    }

    sort(array.begin(),array.end(),comparison);

    for(int i=0;i<N;i++)
    {
        cout<<array[i].elem1<<" "<<array[i].elem2<<endl;
    }

    return 0;
}

C++容器学习,与结构体排序和set来一场邂逅

二、set运用

set,顾名思义,集合的概念,不允许重复的元素。multiset允许值重复,故可以来统计。其他用法两者一致。

// set.cpp : 定义控制台应用程序的入口点。
//

#include "stdafx.h"
#include "iostream"
#include "string"
#include "set"
#include <algorithm>

using namespace std;

int _tmain(int argc, _TCHAR* argv[])
{
	multiset<int> S;
	multiset<int>::iterator si;

	S.insert(4);
	S.insert(4);
	S.insert(3);

	for (si=S.begin(); si!=S.end(); si++)
		cout << *si << endl;

	cout<<S.count(1)<<endl;
	return 0;
}

C++容器学习,与结构体排序和set来一场邂逅