INFO: STL Sample for the advance() Function

ID: Q157671


The information in this article applies to:
  • The Standard C++ Library, used with:
    • Microsoft Visual C++, 32-bit Editions, versions 4.2, 5.0, 6.0


SUMMARY

The sample code below illustrates how to use the advance() STL function in Visual C++.


MORE INFORMATION

Because only random access iterators provide + and - operators, the library provides two template functions, advance() and distance().

Required Header


   <iterator> 

Prototype


   template<class InIt, class Dist>

       void advance(InIt& it, Dist n); 

Description

The advance function accepts two parameters:
  • InIt: The iterator to advance.


  • Dist: The number of elements to increment the iterator by.


The advance function advances the iterator n times. If the iterator is a random-access iterator type, the function evaluates the expression as

   iterator += n. 
Otherwise, it performs each increment by evaluating:

   ++iterator. 
If the iterator is an input or forward iterator type, n must not be negative.

NOTE: The class/parameter names in the prototype may not match the version in the header file. Some have been modified to improve readability.

Sample Code


////////////////////////////////////////////////////////////////////// 
// 
// Compile options needed: /GX
// 
// <filename> :  Advance.cpp
// 
// Functions:
// 
//    advance()
// 
// Written by Linda Koontz
// of Microsoft Product Support Services,
// Copyright (c) 1996 Microsoft Corporation. All rights reserved.
////////////////////////////////////////////////////////////////////// 

/* Compile options needed: /GX
*/ 
#include <iostream>
#include <string>
#include <list>

#if _MSC_VER > 1020   // if VC++ version is > 4.2
   using namespace std;  // std c++ libs implemented in std
   #endif

#pragma warning (disable:4786)

typedef list<string, allocator<string> > STRLIST;

void main() {
    STRLIST List;
    STRLIST::iterator iList;
    STRLIST::difference_type dTheDiff;

    List.push_back("A1");
    List.push_back("B2");
    List.push_back("C3");
    List.push_back("D4");
    List.push_back("E5");
    List.push_back("F6");
    List.push_back("G7");

    // Print out the list
    iList=List.begin();
    cout << "The list is: ";
    for (int i = 0; i < 7 ; i++, iList++)
        cout << *iList  << "  ";

    // Initialize to the first element"
    iList=List.begin();
    cout << "\n\nAdvance to the 3rd element." << endl;
    advance(iList,2);
    cout << "The element is " << *iList << endl;
    dTheDiff = distance( List.begin(), iList);

} 
Program Output is:

The list is: A1  B2  C3  D4  E5  F6  G7

Advance to the 3rd element.

The element is C3 


REFERENCES

Visual C++ Books On Line: Visual C++ Books:C/C++:Standard C++ Library Reference.

Additional query words: STL STLSample

Keywords : kbcode kbVC420 kbVC500 kbVC600 kbDSupport STLIss
Version : winnt:4.2,5.0,6.0
Platform : winnt
Issue type : kbinfo


Last Reviewed: November 23, 1999
© 2000 Microsoft Corporation. All rights reserved. Terms of Use.