Main Page | Namespace List | Class Hierarchy | Alphabetical List | Class List | Directories | File List | Namespace Members | Class Members | File Members | Related Pages

stl iterator access


SourceForge.net Logo     CTTL on    
    SourceForge    
    Download    
    Latest    
    Documentation    
    Index    
    Library    
    News    
    CVS    
    Repository    
   Other    
   Links    

STL iterator access

vector

overloaded subscript operator

#define CTTL_TRACE_RULES   // automatically turns lambda tracing on

#include "cttl/cttl.h"
#include "lambda/lambda.h"

using namespace cttl;

int main(int argc, char* argv[])
{
    // create vector with three elements: ( 33, 33, 33 )
    std::vector< int > vec( 3, 33 );
    std::vector< int >::iterator it;

    // create integer scalar:
    lambda< int >::scalar sint;

    // create vector scalar:
    lambda< std::vector< int > >::scalar_reference svec( &vec );

    // create iterator scalar:
    lambda< std::vector< int >::iterator >::scalar_reference sit( &it );

    (
        sit = alias::begin ( &svec ),
        CTTL_LAMBDA_ASSERT( *sit == scalar( 33 ) ),
        *sit = scalar( 34 ),
        CTTL_LAMBDA_ASSERT( *sit == scalar( 34 ) ),
        CTTL_LAMBDA_ASSERT( svec[ const_scalar( 0 ) ] == scalar( 34 ) )
    ).evaluate();

    return 0;
}

vector iterator

prefix, postfix increment, decrement

#define CTTL_TRACE_RULES // automatically turns lambda tracing on

#include "cttl/cttl.h"
#include "lambda/lambda.h"

using namespace cttl;

int main(int argc, char* argv[])
{
    std::vector< int > vec( 3, 33 );     // vec: 33,33,33
    std::vector< int >::iterator it = vec.begin();
    std::vector< int >::iterator it2 = vec.end();

    lambda< std::vector< int > >::scalar_reference svec( &vec );
    lambda< std::vector< int >::iterator >::scalar_reference sit( &it );
    lambda< std::vector< int >::iterator >::scalar_reference sit2( &it2 );

    (
        CTTL_LAMBDA_ASSERT( sit != sit2 ),
        sit = sit + 3,
        CTTL_LAMBDA_ASSERT( sit == sit2 ),
        sit = alias::begin( &svec ),
        *sit,
        CTTL_LAMBDA_ASSERT( *sit == 33 ),
        *sit++ = 34,
        CTTL_LAMBDA_ASSERT( *sit == 33 ),
        CTTL_LAMBDA_ASSERT( *--sit == 34 )
    ).evaluate();

    assert( it != it2 );
    assert( it == vec.begin() );

    return 0;
}



Copyright © 1997-2006 Igor Kholodov mailto:cttl@users.sourceforge.net.

Permission to copy, use, modify, sell and distribute this document is granted provided this copyright notice appears in all copies. This document is provided "as is" without express or implied warranty, and with no claim as to its suitability for any purpose.


Generated on Thu Nov 2 17:48:53 2006 for CTTL Lambda Expression by  doxygen 1.3.9.1