#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;
}
vector multimap容器操作小例子
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章
NetBeans運行error: bin/nativeexecution/Linux-x86_64/pty
Juffi
2018-08-27 19:54:17
my leetcode#1 #2 #3 #4 #6 #7 #8
Juffi
2018-08-27 19:54:16
my leetcode#13 #14
Juffi
2018-08-27 19:54:15
移植unbuntu Qt項目到 windows 下(包含socket)
Juffi
2018-08-27 19:54:15
學習C++通過使用MinGW+Eclipse(windows下)
暴烈骑士
2018-08-27 19:49:19
虛函數表
fengjingchao8
2018-08-27 19:48:48
C++中int main(int argc, char *argv[])解釋
YuFF
2018-08-27 19:45:47
C++中函數的參數傳遞
YuFF
2018-08-27 19:45:43
直接插入排序、shell 排序、快速排序C++實現
FANG___
2018-08-27 19:42:41
二叉樹的前中後序的遞歸、非遞歸遍歷
FANG___
2018-08-27 19:42:38
(C++) 踩了幾個坑
FANG___
2018-08-27 19:42:38
個人覺得C++BuilderX是個失敗的作品
elever
2018-08-27 19:41:36
CloseHandle(),TerminateThread(),ExitThread()的區別
侠隐仙踪
2018-08-27 19:34:57
拷貝某個文件夾下的所有文件到指定文件夾
侠隐仙踪
2018-08-27 19:34:57
24小時熱門文章
-
再談23種設計模式(3):行爲型模式(學習筆記)
-
Power Automate Desktop 安裝完,登錄後老是提示one driver 錯誤
-
微前端學習筆記(4):從微前端到微模塊之EMP與hel-micro方案探索
-
微前端學習筆記(1):微前端總體架構概述,從微服務發微
-
985 碩士程序員,空窗 4 個月沒有 Offer!
-
一文搞懂 Spring 循環依賴
-
賽博鬥地主——使用大語言模型扮演Agent智能體玩牌類遊戲。
-
VScode右鍵打開(添加到右鍵)
-
記一次 .NET某工控視覺自動化系統 卡死分析
-
WindowsServer--SQL Server搭建主從同步實現讀寫分離 - 事務性分發