Messages的例子

13.33 13.36 13.37

Message.h

#ifndef MESSAGE_H
#define MESSAGE_H
#include<iostream>
#include<string>
#include<set>
#include"Folder.h"
using namespace std;
class Folder;
class Message
{
friend class Folder;
public:
    explicit Message(const string &str=""):contents(str) {}
    Message(const Message&);
    Message& operator=(const Message&);
    ~Message();
    void save(Folder&);
    void remove(Folder&);
    void addFolder(Folder*);
    void remFolder(Folder*);
    void swap(Message&,Message&);
private:
    string contents;
    set<Folder*> folders;
    void add_to_Folders(const Message&);
    void remove_to_Folders();
};

#endif

Message.cpp

#include"Message.h"

void Message::save(Folder &f)
{
    folders.insert(&f);
    f.addMsg(this);
}

void Message::remove(Folder &f)
{
    folders.erase(&f);
    f.remMsg(this);
}

void Message::add_to_Folders(const Message& m)
{
    for(auto f:m.folders)
        f->addMsg(this);
}

void Message::remove_to_Folders()
{
    for(auto f:folders)
        f->remMsg(this);
}

Message::Message(const Message &m):contents(m.contents),folders(m.folders)
{
    add_to_Folders(m);
}

Message& Message::operator=(const Message& m)
{
    remove_to_Folders();
    contents=m.contents;
    folders=m.folders;
    add_to_Folders(m);
    return *this;
}

Message::~Message()
{
    remove_to_Folders();
}

void Message::addFolder(Folder* f)
{
    folders.insert(f);
}

void Message::remFolder(Folder* f)
{
    folders.erase(f);
}
void Message::swap(Message &lhs,Message &rhs)
{
    using std::swap;
    for(auto f:lhs.folders)
        f->remMsg(&lhs);
    for(auto f:rhs.folders)
        f->remMsg(&rhs);
    swap(lhs.folders,rhs.folders);
    swap(lhs.contents,rhs.contents);
    for(auto f:lhs.folders)
        f->addMsg(&lhs);
    for(auto f:rhs.folders)
        f->addMsg(&rhs);
}

Folder.h

#ifndef FOLDER_H
#define FOLDER_H
#include<iostream>
#include<set>
#include<string>
using namespace std;
class Message;
class Folder
{
friend class Message;
private:
    set<Message*> msg;
public:
    void addMsg(Message*);
    void remMsg(Message*);
};
#endif // FOLDER_H

Folder.cpp

#include"Folder.h"
#include"Message.h"
void Folder::addMsg(Message *m)
{
    msg.insert(m);
}

void Folder::remMsg(Message *m)
{
    msg.erase(m);
}

Messages的例子,布布扣,bubuko.com

时间: 2024-10-03 22:15:40

Messages的例子的相关文章

Clustering by Passing Messages Between Data Points(Brendan J.Frey* and Delbert Dueck)例子

例1,数据点聚类:AP应用到25个二维数据中,使用负平法误差作为相似度  聚类数目不用预先指定 AP的一个优点是聚类数目不用预先指定,而是在消息传递方法中慢慢浮现,取决于输入参考度(preference),这种自动模型的选择,基于先验指定每一个数据点有多合适作为exemplar. 下图表示输入常量参考度对聚类数目的影响,这种关系近乎同样于在精确最小平方误差中的关系. 例2,人脸识别:使用优化标准为均方差,识别900张灰度图像   AP一致的能够实现更低的误差,在时间上花费要少于两个数量级. AP

socket编程——一个简单的例子(转)

原文地址:http://blog.csdn.net/wind19/article/details/6156339 从一个简单的使用TCP例子开始socket编程,其基本步骤如下: server                                                  client +++++++                                          ++++++++ 创建socket                               

Linux 日志文件utmp、wtmp、lastlog、messages

1.有关当前登录用户的信息记录在文件utmp中:==who命令 2.登录进入和退出纪录在文件wtmp中:==w命令 3.最后一次登录文件可以用lastlog命令察看: 4.messages======从syslog中记录信息 注意:wtmp和utmp文件都是二进制文件,他们不能被诸如tail命令剪贴或合并(使用cat命令).用户 需要使用who.w.users.last和ac来使用这两个文件包含的信息. 例子: last命令往回搜索wtmp来显示自从文件第一次创建以来登录过的用户 users用单

Protocol Buffers编码详解,例子,图解

本文不是让你掌握protobuf的使用,而是以超级细致的例子的方式分析protobuf的编码设计.通过此文你可以了解protobuf的数据压缩能力来自什么地方,版本兼容如何做到的,其Key-Value编码的设计思路.如果你详细了解此文,你应该就能具备自己造一套编解码轮子的能力(至少基本思路). 测试的例子 阅读图片时请对比前面的例子和表格.每个字段的名称都是包含了tag的. message S2 { optional int32 s2_1 = 1; optional string s2_2 =

IPC介绍——10个ipcs例子

IPC介绍——10个ipcs例子 semaphorearrays2010performancesystemaccess ipcs是一个uinx/linux的命令.用于报告系统的消息队列.信号量.共享内存等 1.列出所有的ipcs参数: -a 他是默认选项及ipcs等效于ipcs -a [[email protected] ~]# ipcs -a ------ Shared Memory Segments -------- key shmid owner perms bytes nattch st

不用找了,比较全的signalR例子已经为你准备好了.

这几天想着将一个winform的工具上线到web上,因为对时时性的要求比较高,找朋友咨询了一下推荐了SignlarR 框架,比较强大.昨天才看到,今天研究了一下将里面的例子都拿出来共享. 最全的参考:http://www.asp.net/signalr/overview/getting-started 关于如果安装SignalR: NuGet命令: PM> Install-Package Microsoft.AspNet.SignalR <------------1:与他人聊天:<---

JMS发布/订阅消息传送例子

阅读目录 前言 在Tomcat中配置JNDI 在Web工厂中编写代码 参考资料 前言 基于上篇文章"基于Tomcat + JNDI + ActiveMQ实现JMS的点对点消息传送"很容易就可以编写一个发布/订阅消息传送例子,相关环境准备与该篇文章基本类似,主要的区别如下. 在Tomcat中配置JNDI 配置连接工厂和话题 <Resource name="topic/connectionFactory" auth="Container" ty

第三章SignalR在线聊天例子

第三章SignalR在线聊天例子 本教程展示了如何使用SignalR2.0构建一个基于浏览器的聊天室程序.你将把SignalR库添加到一个空的Asp.Net Web应用程序中,创建用于发送消息到客户端的集线器(Hubs)类,创建一个Html页面让用户在该页面上发送和接收聊天信息.对于如何在MVC5环境中创建这个聊天室程序,请参阅Getting Started with SignalR 2.0 and MVC 5. SignalR是一个开源的.Net库,用于构建需要实时用户交互或实时数据更新的We

OpenGL ES2.0 入门经典例子

原文链接地址:http://www.raywenderlich.com/3664/opengl-es-2-0-for-iphone-tutorial 免责申明(必读!):本博客提供的所有教程的翻译原稿均来自于互联网,仅供学习交流之用,切勿进行商业传播.同时,转载时不要移除本申明.如产生任何纠纷,均与本博客所有人.发表该翻译稿之人无任何关系.谢谢合作! ps:非常感谢skingTree为我们提供的这篇翻译教程,感谢yy.小狼.北方加入我的教程翻译团队,谢谢你们! 教程截图: OpenGL ES 是