+ -
当前位置:首页 → 问答吧 → 求助写一段代码!!!急需!!!今晚十一点前就要!!!

求助写一段代码!!!急需!!!今晚十一点前就要!!!

时间:2011-12-18

来源:互联网

自由选定一个feature
1)利用Map充当核心数据结构
2)如果在windows下,移植到Linux下
3)利用VC或者OT编写一个界面


包含这三个要求中的任意一个就行!!!急需一段代码!!!

作者: hanfengjianxiu   发布时间: 2011-12-18

C/C++ code
/* 使map<string, size_t>类型按值降序输出 */

#include <iostream>
#include <string>
#include <map>
#include <vector>
#include <algorithm>

using std::map;
using std::vector;
using std::string;

typedef map<string, size_t>::const_iterator Pair;
typedef vector<Pair> VectorPairs;

/* 把map中所有迭代器放到一个vector中 */
void pairs_to_vector(const map<string, size_t> &m, VectorPairs &vec_pairs)
{
    Pair iter(m.begin()), end(m.end());
    for (; iter != end; ++iter)
    {
        vec_pairs.push_back(iter);
    }
}

/* 按值比较的降序谓词 */
bool predicate(const Pair &pair_1, const Pair &pair_2)
{
    return pair_1->second > pair_2->second; 
}

/* 对迭代器进行指定谓词排序 */
void sort_on_value(VectorPairs &vec_pairs)
{
    std::sort(vec_pairs.begin(), vec_pairs.end(), predicate);
}

/* 测试代码 */
int main()
{
    map<string, size_t> m;
    m.insert(std::make_pair("iostream", 8));
    m.insert(std::make_pair("string", 6));
    m.insert(std::make_pair("map", 3));
    m.insert(std::make_pair("pair", 4));
    Pair iter(m.begin()), end(m.end());
    for (; iter != end; ++iter)
    {
        std::cout << iter->first << std::endl;
    }
    std::cout << "按值排序完成" << std::endl;
    VectorPairs vec_pairs;
    pairs_to_vector(m, vec_pairs);
    sort_on_value(vec_pairs);
    VectorPairs::const_iterator iter_(vec_pairs.begin()), end_(vec_pairs.end());
    for (; iter_ != end_; ++iter_)
    {
        std::cout << (*iter_)->first << std::endl;
    }
}

作者: mougaidong   发布时间: 2011-12-18