怎么在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;
} 展开
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;
} 展开
2个回答
展开全部
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
@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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询