STL编程题3(C++程序设计第9周)
2016-01-16 00:26
369 查看
描述
现有一整数集(允许有重复元素),初始为空。我们定义如下操作:
add x 把x加入集合
del x 把集合中所有与x相等的元素删除
ask x 对集合中元素x的情况询问
对每种操作,我们要求进行如下输出。
add 输出操作后集合中x的个数
del 输出操作前集合中x的个数
ask 先输出0或1表示x是否曾被加入集合(0表示不曾加入),再输出当前集合中x的个数,中间用空格格开。
输入
第一行是一个整数n,表示命令数。0<=n<=100000。
后面n行命令,如Description中所述。
输出
共n行,每行按要求输出。
样例输入
样例输出
提示
Please use STL’s set and multiset to finish the task
源码
现有一整数集(允许有重复元素),初始为空。我们定义如下操作:
add x 把x加入集合
del x 把集合中所有与x相等的元素删除
ask x 对集合中元素x的情况询问
对每种操作,我们要求进行如下输出。
add 输出操作后集合中x的个数
del 输出操作前集合中x的个数
ask 先输出0或1表示x是否曾被加入集合(0表示不曾加入),再输出当前集合中x的个数,中间用空格格开。
输入
第一行是一个整数n,表示命令数。0<=n<=100000。
后面n行命令,如Description中所述。
输出
共n行,每行按要求输出。
样例输入
7 add 1 add 1 ask 1 ask 2 del 2 del 1 ask 1
样例输出
1 2 1 2 0 0 0 2 1 0
提示
Please use STL’s set and multiset to finish the task
源码
#include <iostream> #include <set> #include <string> #include <iterator> using namespace std; int main() { multiset<int> mset; set<int> mm; char commend[5]; int i,n,num,amount; multiset<int>::iterator it; cin >> n; for (i=0; i<n; i++) { cin >> commend >> num; switch(commend[1]) { case 'd': mset.insert(num); mm.insert(num); cout << mset.count(num) << endl; break; case 'e': cout << mset.count(num) << endl; mset.erase(num); break; case 's': if (mm.find(num)==mm.end()) cout << "0 0" << endl; else { cout << "1 "; cout << mset.count(num) << endl; } break; } } return 0; }
相关文章推荐
- 字符串与数字转换-C语言
- STL编程题2(C++程序设计第9周)
- 初步剖析C语言编程中的结构体
- C、C++中关键字static的区别
- C/C++程序编译的内存分配情况
- 用C++设计一个不能被继承的类
- STL编程题1(C++程序设计第1周)
- Max Sum (HD_1003) 基础DP
- 【C语言】三种方法实现strlen函数
- 类的初步知识(C++中直角坐标和极坐标之间的转换代码)
- 用c语言指针实现给整形数组冒泡排序
- 一起talk C栗子吧(第一百零二回:C语言实例--使用信号量进行进程间同步与互斥三)
- 【C语言】字符串替换空格:请实现一个函数,把字符串中的每个空格替换成“%20”。
- iOS 学习第八天 C语言 二维数组
- 【LeetCode-326】Power of three 上(C++)
- switch使用总结
- 初探C++流
- C/C++小知识
- C++实现二叉树(二)
- libsvm如何调用svm.cpp进行训练和预测的具体过程