[過去ログ] C++相談室 part154 (1002レス)
前次1-
抽出解除 レス栞

このスレッドは過去ログ倉庫に格納されています。
次スレ検索 歴削→次スレ 栞削→次スレ 過去ログメニュー
771
(5): 2021/02/20(土)00:40 ID:iK8Sr3o/(1) AAS
領域が連続しているコンテナなら何でも良いんですが、たとえば array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
memcpy(b.data(), a.data(), n*sezeof(T))
で良いんですかね?

UNIXコマンドと順番が違ったりして間違えそうなのですが、他に良いやり方ありますか
772: 2021/02/20(土)01:38 ID:YJV0xwOV(1) AAS
>>771
ド素人かよ
773: 2021/02/20(土)01:42 ID:upzAgg50(1/2) AAS
>>771
領域確保されてるならたぶんそれが最速だけど、普通はstd::copyかな
778
(1): はちみつ餃子 ◆8X2XSCHEME 2021/02/20(土)11:52 ID:N5IkYQZo(1/4) AAS
>>771
前提条件として

・ T の型が trivially copyable である
・ vector の大きさが必要な大きさ分に出来ている

ならそれでもいいよ。
でも、 C の関数を C++ でも使えるのはほとんどが互換性のためでしかなく、
作法的にはあまり使わないに越したことは無いって感じ。
779
(1): はちみつ餃子 ◆8X2XSCHEME 2021/02/20(土)11:56 ID:N5IkYQZo(2/4) AAS
>>771
>>778
と思ったけど、 vector<T> ではなくて vector< vector<T> > なのか。
それだと領域が連続するという前提が成り立たないんじゃないんですかね。
790: 蟻人間 ◆T6xkBnTXz7B0 2021/02/20(土)19:27 ID:VmESNyRi(1) AAS
>>771

> array<T> a を vector< vector<T> > b に n 要素分コピーしたいときって
> memcpy(b.data(), a.data(), n*sezeof(T))
> で良いんですかね?

待てよ、b.data()って&b[0]だから型はvector<T>*だろ。書き換えたらいけないアドレスじゃん。

ダメです。
前次1-
スレ情報 赤レス抽出 画像レス抽出 歴の未読スレ AAサムネイル

ぬこの手 ぬこTOP 0.163s*