#include <iostream> 
#include <vector> 
 
int  main( )  { 
    std:: vector < std:: string >  words= { "This" ,"is" ,"just" ,"a" ,"trial!" } ; 
    size_t  i;  //using the contiguous property of a vector: 
    for  ( auto  const &  elem :  words)  { 
    	i =  & elem -  & * words.begin ( ) ; // or 
    	i =  & elem -  & words.front ( ) ; // or  
    	i =  & elem -  words.data ( ) ; // or 
    	i =  std:: addressof ( elem)  -  std:: addressof ( words[ 0 ] ) ;  
    	if ( std:: addressof ( elem)  ==  & words.front ( ) ) 
    	  std:: cout  <<  elem << " (at" << & elem<< ") relative to (" <<  & words[ 0 ]  <<  ") takes position @#" << i<<  std:: endl ; 
    	else  std:: cout  <<  elem << " (at" << & elem<<  ") takes position @#" << i<<  std:: endl ; 
    } 
	return  0 ; 
} 
I2luY2x1ZGUgPGlvc3RyZWFtPgojaW5jbHVkZSA8dmVjdG9yPgoKaW50IG1haW4oKSB7CiAgICBzdGQ6OnZlY3RvcjxzdGQ6OnN0cmluZz4gd29yZHM9eyJUaGlzIiwiaXMiLCJqdXN0IiwiYSIsInRyaWFsISJ9OwogICAgc2l6ZV90IGk7IC8vdXNpbmcgdGhlIGNvbnRpZ3VvdXMgcHJvcGVydHkgb2YgYSB2ZWN0b3I6CiAgICBmb3IgKGF1dG8gY29uc3QmIGVsZW0gOiB3b3JkcykgewogICAgCWkgPSAmZWxlbSAtICYqd29yZHMuYmVnaW4oKTsvLyBvcgogICAgCWkgPSAmZWxlbSAtICZ3b3Jkcy5mcm9udCgpOy8vIG9yIAogICAgCWkgPSAmZWxlbSAtIHdvcmRzLmRhdGEoKTsvLyBvcgogICAgCWkgPSBzdGQ6OmFkZHJlc3NvZihlbGVtKSAtIHN0ZDo6YWRkcmVzc29mKHdvcmRzWzBdKTsgCiAgICAJaWYoc3RkOjphZGRyZXNzb2YoZWxlbSkgPT0gJndvcmRzLmZyb250KCkpCiAgICAJICBzdGQ6OmNvdXQgPDwgZWxlbSA8PCIgKGF0Ijw8JmVsZW08PCIpIHJlbGF0aXZlIHRvICgiPDwgJndvcmRzWzBdIDw8ICIpIHRha2VzIHBvc2l0aW9uIEAjIjw8aTw8IHN0ZDo6ZW5kbDsKICAgIAllbHNlIHN0ZDo6Y291dCA8PCBlbGVtIDw8IiAoYXQiPDwmZWxlbTw8ICIpIHRha2VzIHBvc2l0aW9uIEAjIjw8aTw8IHN0ZDo6ZW5kbDsKICAgIH0KCXJldHVybiAwOwp9