私はこれを理解しようとしてとても迷っています。単純な配列を使用した場合に必要となる空き領域と再編成を追跡する必要がないように、ベクトルを使用することを計画している独自のデータ構造があります。正しく初期化していないのかどうかはわかりませんが、私が行うすべての割り当ては、空中に消えてしまうようです。
これが私が話していることを説明するためのいくつかの簡単なコードです:
#include <vector>
#include <iostream>
using namespace std;
struct node
{
int test_int;
bool test_bool;
};
struct file
{
vector<node> test_file;
};
int main()
{
file myfile;
int myint;
cout << "Enter number: ";
cin >> myint;
myfile.test_file[0].test_int = myint;
cout << "Number entered is: " << myfile.test_file[0].test_int << endl;
return 0;
}
つまり、基本的には構造体内のベクトルです。ベクトルにアクセスする通常の方法は機能していないようです。ベクトルに対して何も読み書きできないためですが、機能しているようmyfile.test_file.size()
に見えます(新しく作成された構造体から「0」を返すなど)。 )。で直接インデックスにアクセスしようとすると、実際には存在しないか myfile.test_file[0].test_int
のように実行時エラーが発生します。vector subscript out of range
正しく初期化していないのですか?これは私にはちょっとばかげているようで、なぜそれがそのように機能しないのか理解できません。
編集:私が参照している動作をより明確に示すためにコードを編集しました。これはコンパイルされますが、ランタイムエラーが発生しますvector subscript out of range