vector multimap容器操作小例子

#include "stdafx.h"
#include <vector>
#include <iostream>
#include <numeric>
#include <string>
#include <map>
using namespace std;


typedef struct File_Part
{
string FileSize;   //文件大小
    string  EffectiveTime;//有效時間
    int PortNum;      //端口號
    string  IP;       //IP地址
    string MAC;  //MAC地址


File_Part& operator = (const File_Part& p){
FileSize=p.FileSize;
EffectiveTime=p.EffectiveTime;
PortNum=p.PortNum;
IP=p.IP;
MAC=p.MAC;
return *this;
}

}part;//文件屬性


typedef struct File_Client
{
    string FileName; 
    part FileSX; 
 }file_infor;//文件信息


ostream& operator << (ostream& os, const File_Part& p){
os<<p.FileSize<<" "<<p.EffectiveTime<<" "<<p.PortNum<<" "<<p.IP<<" "<<p.MAC;
return os;
}


ostream& operator << (ostream& os, const File_Client& p){
os<<p.FileName<<" "<<p.FileSX;
return os;
}


int  main(int argc,  char* argv[])
{
//client1擁有的文件信息
part p0,p1;
p0.FileSize="5M";
p0.EffectiveTime="2013/6/5";
p0.PortNum=8080;
p0.IP="20.12.15.45";
p0.MAC="01-55-22-4-2-49";


p1.FileSize="4M";
p1.EffectiveTime="2013/6/4";
p1.PortNum=8080;
p1.IP="20.12.15.45";
p1.MAC="01-55-22-4-2-49";

file_infor* q=new file_infor[2];
q[0].FileName="喵.mp3";
q[0].FileSX=p0;
q[1].FileName="啦啦愛.mp3";
q[1].FileSX=p1;




//client2擁有的文件信息
part q0,q1,q2;
q0.FileSize="11M";
q0.EffectiveTime="2013/6/1";
q0.PortNum=8080;
q0.IP="11.17.15.67";
q0.MAC="0A-57-27-42-27-39";


q1.FileSize="4M";
q1.EffectiveTime="2013/6/2";
q1.PortNum=8080;
q1.IP="11.17.15.67";
q1.MAC="0A-57-27-42-27-39";

q2.FileSize="4M";
q2.EffectiveTime="2013/6/3";
q2.PortNum=8080;
q2.IP="11.17.15.67";
q2.MAC="0A-57-27-42-27-39";


file_infor* e=new file_infor[3];
e[0].FileName="啦啦愛.mp3";
e[0].FileSX=q0;
e[1].FileName="你好嗎天氣好嗎.mp3";
e[1].FileSX=q1;
e[2].FileName="愛的海洋.mp3";
e[2].FileSX=q2;


//服務器端:將文件信息輸入multimap中,這裏假設在每個對等節點中,各個文件都是唯一的,比如:在對等節點1中不存在兩個"喵.mp3"
multimap<string,part> contine;
typedef multimap<string,part>::iterator iter;
for(int j=0;j<2;j++)
{
contine.insert(make_pair(q[j].FileName,q[j].FileSX));
}
for(int w=0;w<3;w++)
{
contine.insert(make_pair(e[w].FileName,e[w].FileSX));
}



//服務器端:將收到的文件信息全部打印
iter cont_iter;
cont_iter=contine.begin();
while(cont_iter!=contine.end())
{
cout<<cont_iter->first<<" "<<cont_iter->second<<endl;
cont_iter++;
}


//服務器端:根據文件名檢索文件屬性,並放入client_receive容器中
string s="啦啦愛.mp3";
vector<part> client_receive;

iter output1,output2;
output1=contine.lower_bound(s);
output2=contine.upper_bound(s);
while(output1!=output2)
{
//cout<<output1->second<<endl;
client_receive.push_back(output1->second);
output1++;
}


//對等節點端:對收到的信息進行提取
vector<part>::iterator t=client_receive.begin();
while(t!=client_receive.end())
{
cout<<t->IP<<endl;
t++;
}



system("pause");
return 0;
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章