どっちからどっちに変換するかで方法が違うため、すぐ忘れるのでメモ。
vectorから配列
std::copyを使う方法。
1 2 3 4 |
std::vector<int> v = {0,1,2,3}; int array[v.size()]; std::copy(v.begin(), v.end(), array); |
配列からvector
std::copyやvectorのメンバ関数assignを使う方法もあるが、c++11以降なら、以下がたぶん一番シンプル。
1 2 3 |
int array[] = {0,1,2,3,4}; std::vector<int> v( std::begin(array), std::end(array) ); |
配列の大きさとか
以下、おまけ。
既存のvectorに配列を代入するなど、配列のサイズ(要素数)を知りたい場合、c++11以降だと、sizeofを利用する以外の方法も用意されている。
1 2 3 4 5 6 |
int array[] = { 1,2,3,4,5 }; // c++11以降 const size_t cnt = std::extent<decltype(array),0>::value; // c++17以降 const aize_t cnt = std::size(array); |
ただし、既存のvectorに、異なるサイズの配列を代入するだけなら、メモリや実行速度にシビアでなければ、いちいちサイズを求めなくとも以下で済むといえば済む。
1 2 |
std::vector<int> tmp_v( std::begin(array), std::end(array) ); v = tmp_v; |