读书人

怎么给上面这样的vectorlt;intgt;变量赋值

发布时间: 2012-09-14 11:53:44 作者: rapoo

如何给下面这样的vector<int>变量赋值
我现在有一个变量
set< pair< int, pair<int, int> > > myset;
已经给它赋过值。
然后我现在定义一个vector< pair<int, int> >类型的变量
vector< pair<int, int> > pvec;
我想把myset里对应某个键值的pair的实值对赋给pvec(这些实值对有多个),
如下所示:
假设我想把myset里的键值为10的实值对赋给pvec,这些实值对有5个。
myset.counts(10) == 5; // return true

我该如何写代码,不用循环,就是直接初始化赋值什么的,有办法吗


[解决办法]
不要使用嵌套的容器,运行效率会很低。
[解决办法]

C/C++ code
int main (){    set< pair< int, pair<int, int> > > myset;    vector< pair<int, int> > pvec;    pair<int, int> a(1,2);    pair<int, int> b(2,2);    pair< int, pair<int, int> > c(3,a);    pair< int, pair<int, int> > d(5,b);    myset.insert(c);    myset.insert(d);    set< pair< int, pair<int, int> > >::iterator ite = myset.begin();    for ( ; ite!=myset.end(); ++ite)    {        if (ite->first == 5)        {            pvec.push_back(ite->second);        }            }    system ("pause") ;    return 0 ;}
[解决办法]
set< pair< int, pair<int, int> > > myset =
{{ 1, {2, 3} },
{ 1, {2, 4} },
{ 1, {2, 5} }}
用支持C++2011的新编译器就行了。

然后就是用boost::assign库list_of
[解决办法]
建议把 set< pair< int, pair<int, int> > > myset
改成 map<int,set<pair<int,int> > >
或者直接 map<int,vector<pair<int,int> > >
就可以不用循环直接赋值了。

读书人网 >C++

热点推荐