配列のメンバーをどのようにベクトルに転送しますか?あなたの家のクラスの一員として配列からベクトルを初期化する方法C++
std::vector<chair> points(chairarray, chairarray + arraysize);
、あなたは初期化リストでそれを行うだろう:あなたはこのような2回の反復子を取るベクトルのコンストラクタで初期化することができます
配列のメンバーをどのようにベクトルに転送しますか?あなたの家のクラスの一員として配列からベクトルを初期化する方法C++
std::vector<chair> points(chairarray, chairarray + arraysize);
、あなたは初期化リストでそれを行うだろう:あなたはこのような2回の反復子を取るベクトルのコンストラクタで初期化することができます
house::house(int arraysize, chair* chairarray)
:points(chairarray, chairarray + arraysize)
{}
私はおそらく次のようなものを使用します:
points.insert(points.end(), chairarray, chairarray + arraysize);
(これは、 chairarray
の要素とpoints
の要素が同じであるション。)
あなたがまだ存在していないpoints
のメンバーを変更しようとしているので、あなたはおそらくセグメンテーションフォルトです。たとえば、points
の現在のサイズがゼロの場合は、points[0]
を設定することはできません。
最初に、@ md5iと同じように、セグメントの障害の問題は、std::vector<chair> points;
はデフォルトのコンストラクタでpoints
を初期化してサイズがゼロになるようにしました。
オブジェクトを初期化するvector
コンテナの4つの方法がここに存在するいくつかのコードスニペット形式STLソースである:
explicit vector(const allocator_type& __a = allocator_type())
: _Base(__a) {}
vector(size_type __n, const _Tp& __value,
const allocator_type& __a = allocator_type())
: _Base(__n, __a)
{ _M_finish = uninitialized_fill_n(_M_start, __n, __value); }
explicit vector(size_type __n)
: _Base(__n, allocator_type())
{ _M_finish = uninitialized_fill_n(_M_start, __n, _Tp()); }
vector(const vector<_Tp, _Alloc>& __x)
: _Base(__x.size(), __x.get_allocator())
{ _M_finish = uninitialized_copy(__x.begin(), __x.end(), _M_start); }
@Benjaminリンドレーは、最後のものだった使用、及びpoints.insert(points.end(), chairarray, chairarray + arraysize);
ので、vector
に一つの方法だったもの"配列からのベクトルの初期化"に関する主な質問に取り組むための多くの方法:)
ありがとう、それは良い情報です。 – Alex
要素を最初にポイントに割り当てる必要があります。一般的なコピーはまた、あなたのタイピングの多くを保存することができます
house::house(int arraysize, chair* chairarray)
{
points.resize(arraysize); // add this
for(int i=0; i<arraysize; ++i)
{
points[i].x=chairarray[i].x;
points[i].y=chairarray[i].y;
}
}
::ちょうど1行を追加します
points.resize(arraysize);
std::copy(chairarray, chairarray+arraysize, points.begin());
'points'のための完全な申告をしてください。 – Olipro
'int values [] = {1、2、3}; std :: vectorコピー(std :: begin(values)、std :: end(values)); ' –
p0pa
「転送」とはどういう意味ですか? – juanchopanza