В программировании мы сталкиваемся с различными ситуациями, когда мы обязаны использовать промежуточные контейнеры STL, как показано в следующем примере показан:C++ STL: Повторное использование контейнера после очистки?
while(true)
{
set <int> tempSet;
for (int i = 0; i < n; i ++)
{
if (m.size() == min && m.size() <= max)
{
tempSet.insert(i);
}
}
//Some condition testing code
}
Или
set <int> tempSet;
while(true)
{
for (int i = 0; i < n; i ++)
{
if (m.size() == min && m.size() <= max)
{
tempSet.insert(i);
}
}
tempSet.clear();
//Some condition testing code
}
Какой подход лучше с точки зрения времени и пространства сложность с учетом нынешнего состояния C++-компиляторов?
Я не думаю, что вы можете предварительно выделить пространство в наборе. – 2008-10-19 23:24:35
Да, я вижу это. Вы, вероятно, должны были бы сделать что-то глупое с распределителем, чтобы получить приличное предварительное распределение. – EvilTeach 2008-10-19 23:45:08
Я проверил тест. max_size огромен. В этом случае это не проблема. – EvilTeach 2008-10-19 23:56:35