Давайте я имеюИнициализировать вектор структур
struct Vector {
float i,j,k;
}
Я хочу обнулить все элементы VEC объявленной ниже (I, J, K = 0)
std::vector <Vector> vec;
vec.resize(num,0);
Я не хочу использовать reserve(), а затем push_back() обнуляет один за другим. Другое дело, после успешной инициализации vec, я хочу, чтобы все члены vec были снова равны нулю после того, как они будут обработаны. Есть ли что-то вроде memset для векторов?
EDIT: Я сравнил все методы в Майк Сеймура и ответы XEO и в результате size_t size = vec.size(); vec.clear(); vec.resize(size);
является самым быстрым, если они повторяются часто в цикле.
Что касается реселлинга, какой из них быстрее, vec.clear ... или заполнить ...? – Shibli
@Shibli: Они почти наверняка очень похожи по скорости. Если это важно для вас, вам придется их измерять. Если скорость действительно важна, вы можете обнаружить, что 'memset' немного быстрее (см. Ответ Xeo), но более опасный, поскольку он будет разбиваться неопределенными способами, если вы измените свой тип, чтобы он больше не был POD. Опять же, единственный способ сказать, действительно ли это быстрее - это измерить его. –