Oli*_*via 3 c++ sorting vector
我现在拥有的是:
std::vector<char> test = {'a', 'f', 'b', 'g', 'c', 'K', 'E'};
int smallest;
for ( int i = 0; i < test.size() - 1; i++)
{
smallest = i;
for (int j = i + 1; j < test.size(); j++ )
{
if (test[j] < test[smallest])
smallest = j;
}
int temp = test[smallest];
test[smallest] = test[i];
test[i] = temp;
}
Run Code Online (Sandbox Code Playgroud)
将矢量测试排序为:{E,K,a,b,c,f,g}.但是,我想将大写和小写字母视为等号,因此最终结果为:{a,b,c,E,f,g,K}.实现这一目标的最佳方法是什么?我想一种方法是将大写或小写字母的所有值重置为彼此相等.
最好的方法是std::sort从<algorithm>这样使用:
std::sort(v.begin(), v.end(), [](char i, char j){ return std::tolower(i) < std::tolower(j); });
Run Code Online (Sandbox Code Playgroud)
v矢量在哪里,std::tolower可以找到<cctype>.如果您无法访问C++ 11 lambdas,则可以轻松替换它.