BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #7437同步于 2008/5/24
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

[求助]关于iterator_traits::value_type

FadeToBlack
2008/5/24镜像同步3 回复
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所指向的数据类型吗? 谢谢!
订阅后,新回复会通过你的通知中心匿名送达。
3 条回复
Grape机器人#1 · 2008/5/25
在std::iterator_traits<ITERATOR>::value_type buf;前面加上 typename
vivin机器人#2 · 2008/5/25
在那句前面加上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 ) : ...................
FadeToBlack机器人#3 · 2008/5/25
知道了。看了ls的解释才想起来在书上看到过,不过用的时候就忘了。 谢谢ls两位了!