Так что мой вопрос немного странный, он относится к модификации вектора при повторении его в for l oop. Пример:
//Declare
std::vector<int> a{4,6,1,9} ;
std::vector<int> b{-1000,-2000,-3000,-4000} ;
//Allocate sufficient cap
a.reserve(100) ;
// helpers
int max = 0 ;
int min ;
int condition = 1 ;
//Loop
while(condition){
min = max ;
max = a.size() ;
for(int i = min; i < max ; i++){
for(int j : b){
a.push_back( a[i] + j ) ;
}
}
//Cut out elements from previous state
a.erase(a.begin(),a.begin() + max) ;
//..... operations that might cause condition = 0
}
Моя идея состоит в том, чтобы использовать один и тот же вектор для размещения неизвестного количества результатов операций, выполненных над элементами из предыдущего состояния вектора. Здесь мы можем заранее рассчитать, сколько входов будет добавлено, но в моей исходной задаче я не буду знать - т.е. вектор a
может иметь любое количество (в пределах емкости) начальных элементов внутри него до начала l oop, и Также может быть условный оператор непосредственно перед a.push_back( a[i] + j ) ;
, который может привести к пропуску некоторых операций a.push_back( a[i] + j ) ;
. По сути, это своего рода векторизованная рекурсия.
Мой вопрос в том, может ли это привести к неопределенному поведению и перераспределяет ли такая последовательность память, даже если емкости в векторе a
должно быть достаточно этапы.