fork download
  1. #include <iostream>
  2. #include <vector>
  3.  
  4. int main() {
  5. std::vector<std::string> words={"This","is","just","a","trial!"};
  6. size_t i; //using the contiguous property of a vector:
  7. for (auto const& elem : words) {
  8. i = &elem - &*words.begin();// or
  9. i = &elem - &words.front();// or
  10. i = &elem - words.data();// or
  11. i = std::addressof(elem) - std::addressof(words[0]);
  12. if(std::addressof(elem) == &words.front())
  13. std::cout << elem <<" (at"<<&elem<<") relative to ("<< &words[0] << ") takes position @#"<<i<< std::endl;
  14. else std::cout << elem <<" (at"<<&elem<< ") takes position @#"<<i<< std::endl;
  15. }
  16. return 0;
  17. }
Success #stdin #stdout 0.01s 5364KB
stdin
Standard input is empty
stdout
This (at0x55f29abeee70) relative to (0x55f29abeee70) takes position @#0
is (at0x55f29abeee90) takes position @#1
just (at0x55f29abeeeb0) takes position @#2
a (at0x55f29abeeed0) takes position @#3
trial! (at0x55f29abeeef0) takes position @#4