怎么在map<char,set<int> >中插入数据元素?

有一个map<char,set<int>>里边已经存在了许多数据,比如里边现在是A1B1C1假如现在有一个字符串"ABD",把它拆分成字符‘A’、‘B’、‘D’。插入到m... 有一个map<char,set<int> >里边已经存在了许多数据,比如里边现在是

A 1

B 1

C 1

假如现在有一个字符串"ABD",把它拆分成字符‘A’、‘B’、‘D’。插入到map里,并且,对应的set里分别插入2为值。之后map里的情况为:

A 12

B 12

C 1

D 2

用C++STL编程实现,谢谢!

PS:下边是我编的程序,我的想法是,插入ABD的时候,首先检测一下,每个字符原本在map里是否存在,假如存在,直接把2加入对应的set,比如‘A’和‘B’。如果字符原本不在map里,比如字符‘D’,那么将它插入,并且把2加入到它的set。但是运行后不通过。

#pragma warning (disable:4786)
#include<iostream>

#include<map>

#include<set>

#include<iterator>
#include <algorithm>

#include<string>

using namespace std;

int main()

{

typedef map<char,set<int> > MyMap;

typedef map<char,set<int> >::iterator MyMapIter;

MyMap My_map;

MyMapIter MyMap_iter;

string TempItem("ABC");
string TempItem2("ABD");
string::iterator iter;
set<int> saaa;
saaa.insert(1);
for ( int i = 0; i < TempItem.length(); i++ )
{
My_map.insert( make_pair(TempItem.at(i),saaa) );
}
saaa.clear();
saaa.insert(2);

for(int j=0;j<TempItem2.length();j++)
{
iter=TempItem2.begin();
if(My_map.count(TempItem2.begin(),TempItem2.end(),*iter)==1)//这个地方有问题,count函数不是这么用的
{
My_map.insert(make_pair(TempItem2.at(j),saaa));
}
else
{
My_map.insert(make_pair(TempItem2.at(j),saaa));
}
}
for(MyMap_iter=My_map.begin();MyMap_iter!=My_map.end();MyMap_iter++)
{
cout<<(*MyMap_iter).first<<" ";
for( set<int>::iterator iter = MyMap_iter->second.begin(); iter != MyMap_iter->second.end(); iter++ )
{
cout<<(*iter);
}
cout<<endl;
}
system("pause");
return 0;

}
展开
 我来答
errrcac
2011-05-19 · TA获得超过1229个赞
知道小有建树答主
回答量:748
采纳率:0%
帮助的人:392万
展开全部
CREATE PROCEDURE [dbo].[AddUnionBattle]
@time DATETIME,
@state INT,
@proc INT,
@bt INT,
@map INT,
@req_uid INT,
@req_name CHAR(16),
@res_uid INT,
@res_name CHAR(16)
AS
SET NOCOUNT ON
DECLARE @ubid INT
SELECT @ubid=MAX(ub_propid) FROM UnionBattle
IF(@ubid IS NULL) SET @ubid=2000
SET @ubid = @ubid+1
INSERT UnionBattle( ub_propid, time_battle, ub_state, ub_proc, battle_type, battle_map, req_uid, req_uname, res_uid, res_uname)
SELECT @ubid, DATEADD(DAY,-5,@time), @state, @proc, @bt ,@map, @req_uid, @req_name, @res_uid, @res_name
SELECT @ubid
GO
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
敛正雅7f
2011-05-18 · TA获得超过2031个赞
知道大有可为答主
回答量:1553
采纳率:0%
帮助的人:1750万
展开全部
if(My_map.count(TempItem2[j])==1)//这个地方有问题,count函数不是这么用的
这样改不就好了?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式