An iterator is just an object that can be used to iterate the elements in a container. There are different categories of iterators. The difference is what operations they support e.g. with a Forward iterator you you can use ++ to go from one element to the next and with a Random access iterator you can go from one element to another element in one step.http://www.cplusplus.com/reference/iterator/

myA[0] gives you a reference to the first element in myA. It isn't a pointer, nor is it an iterator. A pointer to an array element is an iterator, because it satisfies all requirements to be a random access iterator.

To copy all elements from myA to myB:std::copy(myA, myA + 100, myB.begin());

In C++11 you can also use std::begin and std::end that will work the same way on raw arrays and all other containers.std::copy(begin(myA), end(myA), begin(myB));

Iterators are usually structures that house a pointer which are given a common interface that containers can use to transverse their elements. Though, this isn't always the case. In some implementations of standard containers, "std::vector::iterator", for example, "iterator" is merely defined as "typedef T* iterator".

In effect, the difference between a pointer and an iterator really depends on the implementation of the iterator.

"xutility" indicates that you're using Visual Studio. It does not indicate errors in this case, it raises a warning because using pointers as iterators circumvents the run-time checks Visual Studio adds to the iterators in Debug mode.