У меня есть вектор STL, который хранит диагонали матрицы. Определенное математическое правило, которое я реализую, говорит мне, что я могу создать новую матрицу диагоналей тензорного произведения, просто беря исходный вектор и конкатенируя копию этого вектора на себя (он удваивается по размеру, а значения повторяются после 1/2 * size()).
Я написал следующий код:
std::vector<int> aVec;
for (int k = 0; k < aVec.size(); k++) aVec.insert(aVec.end(), aVec[k]);
Но я получаю seg-faults, когда я пытаюсь это сделать. Если я создам копию aVec и использую это как значение "insert" вставки, а также использую его для size() в args цикла, он будет работать, но я должен сделать оба этих (иначе я все равно получаю seg-faults).
Может ли кто-нибудь объяснить, что происходит под этим, что делает эту реализацию неработоспособной?