#define _CRT_SECURE_NO_WARNINGS #include #include <string> #include #include #include <string> #include class Page { public: std::string name; }; class PageA : public Page { }; class PageB :public Page { }; enum VideoType { IPM, Stitch }; static std::mapbool>> map; void OpenVideo(VideoType type, Page* page) { if (page == nullptr) { return; } auto findValue = map.find(type); if (findValue != map.end()) { if (map[type].size() > 0) { std::cout << "videType =" << type << "视频流已开启" << std::endl; map[type][page] = true; return; } } map[type][page] = true; std::cout << "videType =" << type << "开启视频流" << std::endl; } void CloseVideo(VideoType type, Page* page) { if (page == nullptr) { return; } auto findValue = map.find(type); if (findValue != map.end()) { std::mapbool> &pages = map[type]; pages.erase(page); if (pages.size() == 0) { map.erase(type); std::cout << "videType =" << type << "关闭视频流" << std::endl; } else { std::cout << "videType =" << type << "暂且不能关闭视频流" << std::endl; } } else { std::cout << "videType =" << type << "未开启" << std::endl; } } void main() { Page* pageA = new PageA(); Page* pageB = new PageB(); OpenVideo(VideoType::IPM, pageA); OpenVideo(VideoType::IPM, pageA); OpenVideo(VideoType::IPM, pageB); CloseVideo(VideoType::IPM, pageB); CloseVideo(VideoType::IPM, pageA); OpenVideo(VideoType::IPM, pageA); OpenVideo(VideoType::IPM, pageA); OpenVideo(VideoType::IPM, pageB); CloseVideo(VideoType::IPM, pageB); CloseVideo(VideoType::IPM, pageA); system("pause"); }