zoukankan      html  css  js  c++  java
  • 【C++FAQ】怎么给结构体排序

    使用stl中的sort,并重载要排序的结构体或类的<号即可。示例代码如下(pku1007题)

    #include <iostream>
    #include <vector>
    #include <algorithm>
    #include <string>
    #include <map>
    #include <cmath>
    using namespace std;
    
    //只有ACGT这几个数
    class DNAStr
    {
    public:
    	bool operator < (const DNAStr& other) const{
    		if (inversions < other.inversions)
    		{
    			return true;
    		}
    		if (inversions > other.inversions)
    		{
    			return false;
    		}
    		return _idx < other._idx;
    	}
    	DNAStr(string str,int idx)
    	{
    		_str = str;
    		_idx = idx;
    		int len = str.size();
    		inversions = 0;
    		char DNAChars[] = {'A','C','G','T'};
    		for (int k = 0;k<4;k++)
    		{
    			int nLargerNum = 0;
    
    			for (int i = 0;i<len;i++)
    			{
    				if (str[i] > DNAChars[k])
    				{
    					nLargerNum ++;
    				}else if (str[i] == DNAChars[k])
    				{
    					inversions += nLargerNum;
    				}
    			}
    		}
    	}
    	string _str;
    	int _idx;
    	int inversions; // 逆对数的对数
    };
    int main()
    {
    	vector<DNAStr> dnaStrs;
    	int n,m;
    	cin >> n >> m;
    	for (int i = 0;i<m;i++)
    	{
    		string str;
    		cin >> str;
    		DNAStr dnaStr(str,i);
    		dnaStrs.push_back(dnaStr);
    	}
    
    	sort(dnaStrs.begin(),dnaStrs.end());
    
    	for (int i = 0;i<m;i++)
    	{
    		cout << dnaStrs[i]._str << endl;
    	}
    	return 0;
    }
  • 相关阅读:
    openGL
    shader
    安卓2
    安卓
    错误整理
    3D图形学
    shaderlab
    MVC
    一、TCP扫描技术
    端口扫描技术
  • 原文地址:https://www.cnblogs.com/speedmancs/p/2089205.html
Copyright © 2011-2022 走看看