望んでいる解決法ではないかもしれないけれど。
#include <iostream> #include <list> #define numberof(array) (sizeof(array)/sizeof(*array)) int main(int, char* []) { int array[] = { 1, 2, 3, 4, 5 }; // まとめて初期化 std::list<int> int_list(array, array + numberof(array)); for(std::list<int>::iterator i = int_list.begin(); i != int_list.end(); ++i) { std::cout << *i << std::endl; } std::cout << std::endl; // まとめて追加 int_list.insert(int_list.end(), array, array + numberof(array)); for(std::list<int>::iterator i = int_list.begin(); i != int_list.end(); ++i) { std::cout << *i << std::endl; } return 0; }
STLのコンテナのコンストラクタには、イテレータで要素の範囲を指定して初期化したり挿入したりするものがあります(くわしくはこことか→list - C++ Reference)。
で、ポインタもイテレータとして扱えるので配列の要素をコンテナの初期化/挿入に使うこともできるわけです。
あ、配列でなくて、普通にlist
をはじめSTLのコンテナを使ってもいいわけですが(その場合、範囲はbegin
とend
で指定)。