次のコードは、配列から stl ベクトルを作成できることを知っています。
// the iterator constructor can also be used to construct from arrays:
int myints[] = {16,2,77,29};
std::vector<int> fifth (myints, myints + sizeof(myints) / sizeof(int) );
(ソース: cppreference )
使用されるコンストラクターは
template <class InputIterator>
vector (InputIterator first, InputIterator last,
const allocator_type& alloc = allocator_type());
上記の例で< class InputIterator >が< int >の場合、最初の InputIteratorが整数ポインターではないのはなぜですか? 配列名「myints」は、&myints[0] と同等であるため、最初の要素へのポインターに崩壊します。
正しいバージョンは
template <class InputIterator>
vector (InputIterator *first, InputIterator *last,
const allocator_type& alloc = allocator_type());