Всем привет!
Есть вектор как наиболее эффективно (быстрее) его очистить? В векторе очень много элементов. Что лучше resize(0) или clear()? Интересует конкретно очистка вектора, про swap я знаю...
Спасибо!
Здравствуйте, Srv, Вы писали:
Srv>Всем привет! Srv>Есть вектор как наиболее эффективно (быстрее) его очистить? В векторе очень много элементов. Что лучше resize(0) или clear()? Интересует конкретно очистка вектора, про swap я знаю... Srv>Спасибо!
Здравствуйте, Srv, Вы писали:
Srv>одно и тоже чтоли? а я вот заметил что если вызвать resize(0) то capacity() вернет то что было до этого, а если clear() то capacity() вернет 0...
AFAIU, das ist баг, capacity никогда не должна уменьшаться.
Здравствуйте, Srv, Вы писали:
Srv>одно и тоже чтоли? а я вот заметил что если вызвать resize(0) то capacity() вернет то что было до этого, а если clear() то capacity() вернет 0...
да, одно и то же.
то, что ты наблюдаешь — это самодеятельность твоей реализации.
по стандарту capacity может только расти, по крайней мере, я не вижу, как бы она могла уменьшиться (за исключением swap, естественно)
Здравствуйте, Roman Odaisky, Вы писали:
RO>Здравствуйте, Srv, Вы писали:
Srv>>одно и тоже чтоли? а я вот заметил что если вызвать resize(0) то capacity() вернет то что было до этого, а если clear() то capacity() вернет 0...
RO>AFAIU, das ist баг, capacity никогда не должна уменьшаться.
прикольный баг, компилер Microsoft Visual C++ .NET 2003 ver 7.1.3088
stl
/*
* Copyright (c) 1992-2002 by P.J. Plauger. ALL RIGHTS RESERVED.
* Consult your license regarding permissions and restrictions.
*/
Здравствуйте, Srv, Вы писали:
Srv>одно и тоже чтоли? а я вот заметил что если вызвать resize(0) то capacity() вернет то что было до этого, а если clear() то capacity() вернет 0...
Здравствуйте, Srv, Вы писали:
Srv>Всем привет! Srv>Есть вектор как наиболее эффективно (быстрее) его очистить? В векторе очень много элементов. Что лучше resize(0) или clear()? Интересует конкретно очистка вектора, про swap я знаю... Srv>Спасибо!
если ты хочешь освободить память, то так:
{} должны быть реально scoped
Здравствуйте, ilnar, Вы писали:
I>Здравствуйте, Srv, Вы писали:
Srv>>Всем привет! Srv>>Есть вектор как наиболее эффективно (быстрее) его очистить? В векторе очень много элементов. Что лучше resize(0) или clear()? Интересует конкретно очистка вектора, про swap я знаю... Srv>>Спасибо!
I>если ты хочешь освободить память, то так: I>{} должны быть реально scoped
I>
Упс! забыл указать шаблонные параметры vector<тут нужный тип>
И правильно указали ошибку на последнем коде, накосящил со взятием неконстантной ссылки.
и как всегда VC8sp1 на высоте: скушал последний пример без ругани (((
f:\projects\msvc8\dozdr\dozdr\dozdr.cpp(22) : warning C4239: nonstandard extension used : 'argument' : conversion from 'std::vector<_Ty>' to 'std::vector<_Ty> &'
with
[
_Ty=int
]
A non-const reference may only be bound to an lvalue
/Za:
f:\projects\msvc8\dozdr\dozdr\dozdr.cpp(22) : error C2665: 'std::swap' : none of the 2 overloads could convert all the argument types
n:\program files\microsoft visual studio 8\vc\include\utility(16): could be 'void std::swap<std::vector<_Ty>>(std::vector<_Ty> &,std::vector<_Ty> &)' [found using argument-dependent lookup]
with
[
_Ty=int
]
n:\program files\microsoft visual studio 8\vc\include\vector(1309): or 'void std::swap<int,std::allocator<_Ty>>(std::vector<_Ty> &,std::vector<_Ty> &)' [found using argument-dependent lookup]
with
[
_Ty=int
]
while trying to match the argument list '(std::vector<_Ty>, std::vector<_Ty>)'
with
[
_Ty=int
]
Здравствуйте, Sergey Chadov, Вы писали:
SC>Здравствуйте, ilnar, Вы писали:
I>>круто! а где узнать перечень всех этих волшебных ключей? I>>есть ли стандартные методы задачть выбором галочек, а не "шифрокодов"?
SC>Конечно.
SC>Configuration Properties\C/C++\General\Warning Level = Level 4(/W4) SC>Configuration Properties\C/C++\Language\Disable Language Extensions = Yes(/Za)
эти я видел. хотелось бы узнать больше про всякие параметры настройки, на что каждый из них влияет. какой уровень что ловит, траляля, траляля
Здравствуйте, Sergey Chadov, Вы писали:
SC>Здравствуйте, ilnar, Вы писали:
I>>эти я видел. хотелось бы узнать больше про всякие параметры настройки, на что каждый из них влияет. какой уровень что ловит, траляля, траляля
SC>Ну в описании каждого варнинга в МСДН написано какого он уровня, а вот наоборот не видел.
значит надо как-то составить обратное, надо подумать, интересная задача для мозгов
Здравствуйте, ilnar, Вы писали:
SC>>Ну в описании каждого варнинга в МСДН написано какого он уровня, а вот наоборот не видел.
I>значит надо как-то составить обратное, надо подумать, интересная задача для мозгов
собственно говоря задача заключается в поиске и раскуривании майкрософтовского SDK для работы с их системой документации.
Потом запускаем на ночь что-то типа
aWarninglevel = Hash.new
theMSDNHtmlFiles.each{|aHtmlFile|
if(aHtmlFile.title=~/Compiler Warning \(level (\d)\) C\d+/) then
aWarninglevel[$1] = aHtmlFile.text
print $1
end
}
естествено детали могут отличаться в зависимости от того, что именно и как именно предоставляет SDK.
Здравствуйте, Sergey Chadov, Вы писали:
SC>Здравствуйте, ilnar, Вы писали:
SC>>>Ну в описании каждого варнинга в МСДН написано какого он уровня, а вот наоборот не видел.
I>>значит надо как-то составить обратное, надо подумать, интересная задача для мозгов SC>собственно говоря задача заключается в поиске и раскуривании майкрософтовского SDK для работы с их системой документации. SC>Потом запускаем на ночь что-то типа SC>