ベクトルを作成しようとしていて、while サイクルに入り、そのベクトルを使用してから、各サイクルの最後にベクトルのサイズを変更します。そこでmy_vector.clear()
、サイクルの最後とmy_vector.resize(newSize)
最初に a を作成することにしました。サンプルコードは次のとおりです。
typedef struct my_type{
int numNextDom;
bool knockedDown;
} my_type;
int main (int argc, char * const argv[]) {
int i, testCase, totalDom, numLines, num_dom=0, num_next_dom=0, aux_map_int = 0, linesScanned = 0;
bool firstTime=true;
std::cin>>testCase;
std::vector<my_type> my_vector;
while(aux_map_int < testCase){
std::cin>>totalSize>>numLines;
my_vector.resize(totalSize);
while (linesScanned < numLines) {
std::cin>>num_dom>>num_next_dom;
if(firstTime){
my_vector[0].numNextDom = totalSize;
my_vector[0].knockedDown = true;
firstTime=false;
}
my_vector[num_dom].numNextDom = num_next_dom;
my_vector[num_dom].knockedDown = false;
linesScanned++;
}
std::cout << giveResult(my_vector) << std::endl;
aux_map_int++;
my_vector.clear();
}
return 0;
}
ご覧my_vector.clean()
のとおり、ベクトルを作成した後、os サイズは 1 になりますが、ループが再実行my_vector
されると、サイズは 1 のままで、my_vector.resize(totalSize)
. 何か不足していますか?