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