请教下 STL中函数对象的语法问题
被STL中函数对象的使用搞乱了,两条语句set<int,less<int>>coll;transform(coll.begin(),coll.end(),coll.beg...
被STL中函数对象的使用搞乱了,
两条语句
set<int, less<int> > coll;
transform(coll.begin(), coll.end(), coll.begin(), negate<int>());
为什么在声明set时 op只需要类名 less<int>就可以了,而在调用transform时却需要用negate<int>()建立临时对象呢 展开
两条语句
set<int, less<int> > coll;
transform(coll.begin(), coll.end(), coll.begin(), negate<int>());
为什么在声明set时 op只需要类名 less<int>就可以了,而在调用transform时却需要用negate<int>()建立临时对象呢 展开
1个回答
展开全部
template <class InputIterator, class OutputIterator, class UnaryFunction>
OutputIterator transform(InputIterator first, InputIterator last,
OutputIterator result, UnaryFunction op);
op是一个函数参数, 不能传类型做参数,所以要实例化一个nagate<int>
而
template set<class Key, class Compare, class Alloc>
Compare是模板参数,可以传类型作为参数
OutputIterator transform(InputIterator first, InputIterator last,
OutputIterator result, UnaryFunction op);
op是一个函数参数, 不能传类型做参数,所以要实例化一个nagate<int>
而
template set<class Key, class Compare, class Alloc>
Compare是模板参数,可以传类型作为参数
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询