OS:Windows7(64bit) Home Premium SP1
統合開発環境:Visual Studio Community 2017
コンパイラ:Visual C++ 2017
ライブラリ:DXライブラリVer3.18a
質問は、構造体を要素に持つ配列のメンバアクセスについてです。
構造体を要素に持つ配列を動的に確保するのにstd::vectorを使っていますが
ポインタを使った方が処理が速いということを聞き、ポインタを使った方が良いのかな、と考えています。
ですが、ポインタは上級者向けで難しいというイメージがあるのと、メンバアクセスは
アロー演算子を使わなければならないのが個人的に分かりづらいということもあり、使用を避けていました。
しかし、試しに下記のソースのようにポインタのメンバアクセスをアロー演算子を使わずに
std::vectorと同じような方法で記述してみたところ、問題なくアクセスできているように思えます。
(下記のソースを実行すると、test[0].a = 1、test[1].a = 2 と出力されます)
ポインタのメンバアクセスはvectorと同じ方法で問題ないのでしょうか?
また、問題がない場合、配列をstd::vectorで宣言している部分をポインタで宣言するように変更すれば
処理を高速化することができるのでしょうか?
C++初心者で、ポインタについての理解がまだほとんどないため、ご教授願います。
よろしくお願い致します。
#include "stdafx.h"
#include <iostream>
#include <vector>
// 構造体
struct Test {
int a;
};
int main() {
// 確保する要素数
int num = 10;
std::vector<Test> test;
Test* testp;
// メモリの動的確保
test.resize(num);
testp = new Test[num];
// 構造体のメンバ「a」に値を代入
test[0].a = 1;
testp[1].a = 2;
// メンバの値をコンソールに出力
std::cout << "test[0].a = " << test[0].a << "\n";
std::cout << "testp[1].a = " << testp[1].a << "\n";
// 入力待ち
getchar();
// メモリの解放
delete[] testp;
}