Безопасно ли std::vector::clear()- внутренний вектор двумерного векторного потока?
Допустим, у меня есть объект threadWork
инициализируется как:
vector< vector<myType> > threadWork(N_THREADS, vector<myType>());
Я тогда развернуть N_THREADS
потоки, каждый из которых выполняет запись через vector::push_back()
с отдельным элементом (его собственным vector<myType>
объект) из threadWork
,
Затем один поток вызывает vector::clear()
на своем элементе threadWork
, Это делает недействительными записи других потоков в их элемент? т.е. может vector::clear()
называется на один элемент threadWork
изменить распределение памяти других элементов threadWork
так, что поток может писать в результате неправильные адреса в результате?
1 ответ
Решение
Это совершенно нормально. Изменение элемента внешнего вектора никак не влияет на другие элементы.