質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

Q&A

解決済

1回答

1860閲覧

std::vectorの使い方について

gochuumonha

総合スコア74

Objective-C

Objective-Cはオブジェクト指向型のプログラミング言語のひとつです。C言語をベースにSmalltalkが取り入れられています。

C++

C++はC言語をもとにしてつくられた最もよく使われるマルチパラダイムプログラミング言語の1つです。オブジェクト指向、ジェネリック、命令型など広く対応しており、多目的に使用されています。

0グッド

0クリップ

投稿2016/10/23 10:53

編集2016/10/23 11:04

c、java、lisp、phpなど学習経験があります。今回、fbxsdkを使用して、3dモデルを読み込み、表示、動かす、ということを使用と考えています。そこで下記のURLのサイトを参考にしているのですが、少しわからないところがあったので質問させてもらいました。
http://ramemiso.hateblo.jp/entry/2014/06/21/150405
std::vectorについて色々と調べてみたところ、動的な配列ということはわかりました。ですが、

std::vector<GLKVector3> GetPositionList(FbxMesh* mesh, const std::vector<int>& indexList)
{
// コントロールポイントがいわゆる位置座標
std::vector<GLKVector3> positionList;
positionList.reserve(indexList.size());

for (auto index : indexList)
{
auto controlPoint = mesh->GetControlPointAt(index);

positionList.push_back(GLKVector3Make(controlPoint[0], controlPoint[1], controlPoint[2])); // wは0.0のみ対応 assert(controlPoint[3] == 0.0);

}
return positionList;
}

のように使われている部分があって、ここがどのような使われ方なのかわかりません。{}の中に配列の数字が書かれている解説サイトは見つけたのですが、それとは違うように感じます。よろしくお願いいたします。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

yohhoy

2016/10/23 12:01

それで、質問の対象はどこでしょうか?
gochuumonha

2016/10/23 16:16

すいません。分かりにくかったです。std::vector<GLKVector3> GetPositionList(FbxMesh* mesh, const std::vector<int>& indexList) { ……}で、std::vectorという動的配列の後にある{}の中に数字以外が入っているのですが、ここのstd::vectorはどのような使われ方なのでしょうか?
yohhoy

2016/10/24 05:53

「{}の中に数字以外」が「// コントロールポイントがいわゆる位置座標」から「return positionList;」までの区間を指しているなら、「戻り値がstd::vector<GLKVector3>型であり、関数引数リストにFbxMesh*型とconst std::vector<int>&型をとる関数GetPositionListの本体定義」です。質問の趣旨がstd::vector<>の使い方であれば、Chironianさん回答を参照ください。
gochuumonha

2016/10/25 01:04

丁寧にありがとうございます‼とても参考になりました。
guest

回答1

0

ベストアンサー

こんにちは。

positionList.reserve(indexList.size());

で、indexListに記録されている要素の数と同じ数の記憶領域を獲得してます。
この処理は必要はないですが、有った方が効率が良いです。

positionList.push_back(GLKVector3Make(controlPoint[0], controlPoint[1], controlPoint[2]));

は、GLKVector3Make(controlPoint[0], controlPoint[1], controlPoint[2])にてGLKVector3のインスタンスを生成し、push_back()でpositionListの最後に追加してます。

英語ですが、ここにpush_back()サンプルがあります。Exampleの右肩にある歯車ボタンを押すとこのサンプルを触って走らせることができるので便利ですよ。

投稿2016/10/23 12:48

Chironian

総合スコア23272

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

gochuumonha

2016/10/23 16:29

ありがとうございました!!
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問