У меня есть вложенная структура for-loop, и сейчас я повторно объявляю вектор в начале каждой итерации:
void function (n1,n2,bound,etc){
for (int i=0; i<bound; i++){
vector< vector<long long> > vec(n1, vector<long long>(n2));
//about three more for-loops here
}
}
Это позволяет мне "начинать новую" каждую итерацию, которая отлично работает, потому что мои внутренние операции в основном представлены в виде vec [a] [b] + = некоторое значение. Но я беспокоюсь, что он медленный для больших n1 или больших n2. Я не знаю базовой архитектуры векторов/массивов/etc, поэтому я не уверен, что самый быстрый способ справиться с этой ситуацией. Должен ли я использовать массив? Должен ли я очистить его по-другому? Должен ли я вообще обрабатывать логику?
EDIT: размер вектора технически не меняет каждую итерацию (но может изменяться в зависимости от параметров функции). Я просто пытаюсь очистить его /etc, поэтому программа так же быстро, как и по-человечески, возможна при любых других обстоятельствах.
EDIT:
Мои результаты разных методов:
Timings (for a sample set of data):
reclaring vector method: 111623 ms
clearing/resizing method: 126451 ms
looping/setting to 0 method: 88686 ms