首页 > 代码库 > c++11 std::next 与auto 使用
c++11 std::next 与auto 使用
auto
定义变量时放在变量前,无需知道具体变量类型,系统可自行推断类型,减少编程工作,特别是在模板使用时,使用更方便。
下面简单例子:
1 auto a=1;2 auto b=‘a‘;3 auto s="abdc";4 auto c;//这样使用时错误的,系统无法自动推断出变量类型5 //下面为迭代指针使用,很方便6 vector<int> vec;7 auto it=vec.begin();
模板使用例子:
1 template<typename InputIterator>2 TreeNode *creatTree(InputIterator in_beg,InputIterator in_end...)3 {4 .....5 auto inRootPos=find(in_beg,in_end,val);6 ......7 }
std::next(英文原版)
Defined in header <iterator>
template< class ForwardIt >
ForwardIt next( ForwardIt it,
typename std::iterator_traits<ForwardIt>::difference_type n = 1 );
Return the nth successor of iterator it.
Parameters
it -- 迭代指针
n -- 向前进的元素个数,缺省默认为1
Return value
The nth successor of iterator it.(返回it的第n个后继迭代指针)
一种实现:
template<class ForwardIt>ForwardIt next(ForwardIt it, typename std::iterator_traits<ForwardIt>::difference_type n = 1){ std::advance(it, n); return it;}
综合例子:
1 #include <iostream> 2 #include <iterator> 3 #include <vector> 4 5 int main() 6 { 7 std::vector<int> v{ 3, 1, 4 }; 8 9 auto it = v.begin();10 11 auto nx = std::next(it, 2);12 13 std::cout << *it << ‘ ‘ << *nx << ‘\n‘;14 }
输出:
3 4
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。