返回信息流5 template <typename ITERATOR, class IDICATOR>
6 void bubble_sort ( ITERATOR begin, ITERATOR end,
7 IDICATOR const& idicator )
8 {
9 std::iterator_traits<ITERATOR>::value_type buf;
10 for ( ITERATOR iter1 = begin; iter1 != end; ++iter1 )
11 {
12 for ( ITERATOR iter2 = iter1; iter2 != end; ++iter2 )
13 {
14 if ( ! idicator ( *iter1, *iter2 ) )
15 {
16 buf = *iter1;
17 *iter1 = *iter2;
18 *iter2 = buf;
20 }
21 }
22 }
23 }
Projects/bubble_sort.cpp:9: error: expected `;' before ‘buf’
Projects/bubble_sort.cpp:15: error: ‘buf’ was not declared in this scope
Projects/bubble_sort.cpp:17: error: ‘buf’ was not declared in this scope
为什么会出现buf未声明呢?iterator_traits<ITERATOR>::value_type不是会返回ITERATOR所指向的数据类型吗?
谢谢!
这是一条镜像帖。来源:北邮人论坛 / cpp / #7437同步于 2008/5/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖
[求助]关于iterator_traits::value_type
FadeToBlack
2008/5/24镜像同步3 回复
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
在那句前面加上typename
也就是应该写成
typename std::iterator_traits<Iterator>::value_type buf;
指定一下value_type是一个在iterator_traits<Iterator>中声明的类型,而不是普通成员
【 在 FadeToBlack (Forever MetallicA) 的大作中提到: 】
: 5 template <typename ITERATOR, class IDICATOR>
: 6 void bubble_sort ( ITERATOR begin, ITERATOR end,
: 7 IDICATOR const& idicator )
: ...................