`
fenger_chui
  • 浏览: 104426 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

C++ vector和map的使用(参考其他资料)

阅读更多

#include <time.h>
#include <stdlib.h>
#include <iostream.h>
#include <map.h>
#include <vector.h>
#include <algorithm>
using namespace std;

#define MAX_BUF_SIZE 1024

typedef struct
{
short int length;
short int type;
int ID;
short int sequence;
short int flag;
}m_header;

typedef struct
{
m_header head;
char XmlMessages[MAX_BUF_SIZE];
}m_message;

////////////////////////////Vector排序函数的定义///////////////////////////
bool vectorCompare(const m_message & m1,const m_message & m2)
{
return m1.head.sequence<m2.head.sequence ;
}

int main()
{
m_message * mess;
vector<m_message>* nm = NULL;

map<int,vector<m_message> *> ml;
map<int,vector<m_message>*>::iterator pIter;

m_message mess0;
mess=&mess0;
mess->head.length=4;
mess->head.type=802;
mess->head.sequence=1;
mess->head.ID = 2005;

for(pIter=ml.begin();pIter!=ml.end();pIter++)
{
if(pIter->first == mess->head.ID)
{nm = pIter->second;}
}
if(nm==NULL)
{
vector<m_message> vect;
nm = &vect;
ml.insert(map<int,vector<m_message>*>::value_type(mess->head.ID,&vect));
}
(*nm).push_back(mess0);
nm = NULL;

m_message mess1;
mess=&mess1;
mess->head.length=4;
mess->head.type=801;
mess->head.sequence=2;
mess->head.ID = 2005;

for(pIter=ml.begin();pIter!=ml.end();pIter++)
{
if(pIter->first == mess->head.ID)
{nm = pIter->second;}
}
if(nm==NULL)
{
vector<m_message> vect;
nm = &vect;
ml.insert(map<int,vector<m_message>*>::value_type(mess->head.ID,&vect));
}
(*nm).push_back(mess1);
nm = NULL;

m_message mess2;
mess=&mess2;
mess->head.length=4;
mess->head.type=801;
mess->head.sequence=3;
mess->head.ID = 2008;

for(pIter=ml.begin();pIter!=ml.end();pIter++)
{
if(pIter->first == mess->head.ID)
{nm = pIter->second;}
}
if(nm==NULL)
{
vector<m_message> vect;
nm = &vect;
ml.insert(map<int,vector<m_message>*>::value_type(mess->head.ID,&vect));
}
(*nm).push_back(mess2);
nm = NULL;

m_message mess3;
mess=&mess3;
mess->head.length=4;
mess->head.type=801;
mess->head.sequence=2;
mess->head.ID = 2008;

for(pIter=ml.begin();pIter!=ml.end();pIter++)
{
if(pIter->first == mess->head.ID)
{nm = pIter->second;}
}
if(nm==NULL)
{
vector<m_message> vect;
nm = &vect;
ml.insert(map<int,vector<m_message>*>::value_type(mess->head.ID,&vect));
}
(*nm).push_back(mess3);
nm = NULL;


for(pIter=ml.begin();pIter!=ml.end();pIter++)
{
if(pIter->first == 2005)
{
nm = pIter->second;
sort((*nm).begin(),(*nm).end(),vectorCompare);
}
}

for(int i=0;i<(*nm).size();i++)
{
printf("ID:%d,sequence:%d,type:%d\n",(&(*nm).at(i))->head.ID,(&(*nm).at(i))->head.sequence,(&(*nm).at(i))->head.type);
}

(*nm).~vector<m_message>.();


for(pIter=ml.begin();pIter!=ml.end();pIter++)
{
if(pIter->first == 2008)
{
nm = pIter->second;
sort((*nm).begin(),(*nm).end(),vectorCompare);
}
}

for(int i=0;i<(*nm).size();i++)
{
printf("ID:%d,sequence:%d,type:%d\n",(&(*nm).at(i))->head.ID,(&(*nm).at(i))->head.sequence,(&(*nm).at(i))->head.type);
}

(*nm).~vector<m_message>.();

return 0;
}

分享到:
评论

相关推荐

    vector list map pair stl 标准模板库 c++

    在C++编程中,STL(Standard Template Library,标准模板库)是一个不可或缺的部分,它提供了高效、可重用和模块化的代码实现。STL的核心组件包括容器、迭代器、算法和函数对象。在这个主题中,我们将深入探讨四个...

    C++中vector可以作为map的键值实例代码

    该方法可以广泛应用于实际开发中,例如在项目中根据状态找到一个对应的结果时,可以使用map容器来存储状态和结果之间的映射关系,并且使用vector作为键值类型来存储复杂的状态信息。 本文为大家介绍了C++中vector...

    vector与map简介_map_资料_vector_

    在C++标准库中,`std::vector`和`std::map`是两种非常重要的容器。它们被设计用于存储和管理数据,各自有着独特的特性和用途。本文将深入讲解这两种容器的基本概念、工作原理以及常见操作,以帮助初学者更好地理解和...

    vectormap 支持map的顺序查找

    在C++编程中,"vectormap"的概念似乎是一种结合了`std::vector`和`std::map`特性的自定义容器。`std::vector`是一个动态数组,它提供了随机访问和高效的操作,如插入和删除元素。而`std::map`则是一个关联容器,它...

    网龙实习生题目c++:STL的map和vector使用

    根据给定文件的信息,本文将深入探讨C++中STL(标准模板库)中的`map`与`vector`容器在游戏开发场景中的具体应用。网龙实习题目要求候选人实现两个类`IItem`和`IPackage`,并利用STL中的`map`和`vector`来管理物品和...

    C++模板(vector、map、multimap、set、multiset)

    在C++标准库中,模板被广泛应用于STL(Standard Template Library,标准模板库),其中包括了各种容器如vector、map、multimap、set和multiset。这些容器都是模板类,它们提供了高效的数据组织和操作方式。 1. **...

    浅谈c++ vector和map的遍历和删除对象

    在C++编程中,`vector`和`map`是两种常用的数据结构,分别用于存储顺序数据和关联数据。本文将探讨如何在C++中遍历并删除这两种容器中的对象。 首先,我们来看`vector`。`vector`是一个动态数组,可以方便地进行...

    C++STL vector list map set dqueue 等应用举例及PPT讲解示例,代码演示

    在这个主题中,我们将深入探讨vector、list、map、set和deque这五个主要的STL容器,并通过具体的例子和PPT讲解来理解它们的应用。 1. **vector**:vector是动态数组,它可以方便地在任何位置插入和删除元素,但主要...

    实现从vector中过滤重复的数据

    我们将深入探讨这些方法,并结合`map`和STL(标准模板库)中的其他工具进行讲解。 1. **基本遍历法** 最直观的方法是通过遍历`vector`并比较相邻元素。如果发现重复项,就将其删除。这种方法效率较低,因为需要多...

    c++容器list、vector、map、set区别与用法详解

    c++容器list、vector、map、set区别 list 封装链表,以链表形式实现,不支持[]运算符。 对随机访问的速度很慢(需要遍历整个链表),插入数据很快(不需要拷贝和移动数据,只需改变指针的指向)。 新添加的元素,...

    C++中map和vector作形参时如何给定默认参数?

    map和vector都可以用operator[]进行访问,map是用[]中的数据作为key进行查询,而vector是用[]中的数作为下标进行访问。 如果在用operator[]进行访问的时候出现了越界情况,即map没有这个键值对,或vector的大小小于...

    c++用vector实现HashSet

    通过使用`std::vector`实现HashSet,我们学习了如何利用C++标准库中的不同容器组合来满足特定需求。这种方法虽然可能效率较低,但在某些特定场景下,例如教学、理解数据结构原理或者在资源有限的环境中,它可能会是...

    C++标准库教程和参考 中文版

    《C++标准库教程和参考》是C++程序员不可或缺的一本参考资料,由知名计算机科学家Alexandrescu、Sutter和Meyers等合著,并由侯捷翻译为中文版,由华中科技大学出版社出版。这本书深入浅出地介绍了C++标准库的各个...

    STL中的常用的vector,map,set,Sort用法

    根据给定文件的信息,我们可以总结出以下几个...以上就是关于 `vector` 和 `map` 的详细介绍,它们都是 C++ STL 中非常重要的数据结构,对于初学者来说,熟练掌握这些基础知识对于进一步学习 C++ 有着至关重要的作用。

    STL讲义其中包含部分有: vector list map,还有一些例子

    STL,全称为Standard Template Library(标准模板库),是C++编程语言中不可或缺的一部分,它提供了高效、...通过深入理解vector、list和map的内部工作原理,以及如何有效地使用它们,你将能够更好地应对各种编程挑战。

    C++标准程序库自修参考手册

    《C++标准程序库自修参考手册》是一本深度探讨C++标准程序库的重要书籍,旨在帮助读者全面理解和掌握C++编程中的各种库函数和工具。C++标准程序库是C++语言的核心组成部分,它提供了丰富的功能,包括容器、算法、...

    stl入门(vector,map,pair,set)

    本文主要介绍STL中的三个基础容器:vector、map、pair和set,以及如何通过它们来构建和操作数据。 首先,我们来看vector。vector可以被视为动态的、可变长度的数组。其内部实现基于动态内存分配,当需要添加元素时...

    C++ api中文参考手册

    2. **STL泛型编程**:STL是C++中极其重要的一部分,它包括容器(如vector、list、set、map等)、迭代器、算法和函数对象。STL通过泛型编程实现了数据结构和算法的分离,极大地提高了代码的复用性和效率。手册会深入...

Global site tag (gtag.js) - Google Analytics