cmListCommand: Use cmRemoveIndices for REMOVE_AT subcommand.

Avoid repeatedly looping over the indices to process elements (even
without breaking out of the loop when the element is found).
This commit is contained in:
Stephen Kelly 2015-02-15 15:23:43 +01:00
parent 0b5cf0dabd
commit 6a22e40147
1 changed files with 9 additions and 16 deletions

View File

@ -527,27 +527,20 @@ bool cmListCommand::HandleRemoveAtCommand(
removed.push_back(static_cast<size_t>(item));
}
std::sort(removed.begin(), removed.end());
removed.erase(std::unique(removed.begin(), removed.end()), removed.end());
varArgsExpanded.erase(cmRemoveIndices(varArgsExpanded, removed),
varArgsExpanded.end());
std::string value;
const char* sep = "";
for ( cc = 0; cc < varArgsExpanded.size(); ++ cc )
{
size_t kk;
bool found = false;
for ( kk = 0; kk < removed.size(); ++ kk )
{
if ( cc == removed[kk] )
{
found = true;
}
}
if ( !found )
{
value += sep;
value += varArgsExpanded[cc];
sep = ";";
}
}
this->Makefile->AddDefinition(listName, value.c_str());
return true;