在列表中对对象进行排序并组合值
Sorting objects in a list and Combining values
我有一个 std::list<object>
,对象中有6个整数和一个char数组元素。我想用特定的整数对这些对象进行排序(假设整数a),然后,我想将char数组与排序顺序结合。
STL是否具有某种特定分类的方法?如果没有,我该如何处理这种分类?
std::list::sort
具有自定义比较器的过载,对于更合适的容器,std::sort
也是如此。因此,您可以将其用于排序:
my_list.sort([](object const & o1, object const & o2) {return o1.a < o2.a;});
我不确定您所说的"组合炭数组"是什么意思,但是您可以用std::for_each
,std::transform
或简单的循环在排序列表上迭代,以便依次使用每个对象进行操作。
您可以为排序函数提供自己的比较器或实现操作员&lt;对于您的object
课程。您可以在这里找到更多信息。请注意使用std::list::sort
而不是std::sort
。
// list::sort
#include <iostream>
#include <list>
#include <string>
#include <cctype>
// comparison, not case sensitive.
bool compare_nocase (const std::string& first, const std::string& second)
{
unsigned int i=0;
while ( (i<first.length()) && (i<second.length()) )
{
if (tolower(first[i])<tolower(second[i])) return true;
else if (tolower(first[i])>tolower(second[i])) return false;
++i;
}
return ( first.length() < second.length() );
}
int main ()
{
std::list<std::string> mylist;
std::list<std::string>::iterator it;
mylist.push_back ("one");
mylist.push_back ("two");
mylist.push_back ("Three");
mylist.sort();
std::cout << "mylist contains:";
for (it=mylist.begin(); it!=mylist.end(); ++it)
std::cout << ' ' << *it;
std::cout << 'n';
mylist.sort(compare_nocase);
std::cout << "mylist contains:";
for (it=mylist.begin(); it!=mylist.end(); ++it)
std::cout << ' ' << *it;
std::cout << 'n';
return 0;
}
相关文章:
- 二叉排序树无法编译
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 仅使用绝对值对数组进行排序,并在C++中显示实际值
- 可组合的lambda/std::函数与std::可选
- C++选择排序算法中的逻辑错误
- 使用C++程序合并排序没有得到正确的输出
- 如何将两个不同矢量的同一位置的两个元素组合在一起
- 计算排序向量的向量中唯一值的计数
- 排序算法c++
- 使用2个键的cpp-stl::优先级队列排序不正确
- 将结构向量排序为子组
- 在列表中对对象进行排序并组合值
- 模板参数的组合排序
- 在 2D z 排序渲染系统中组合点(粒子)和三角形(精灵)
- 在c++中正确组合合并排序和插入排序
- c++将更多排序的子数组合并为一个数组
- 寻找c++快速排序/插入排序组合中的错误
- 如何组合两个部分排序的数组
- 使用多个动态数组合并排序
- 将具有排序行的2D数组合并为一个大的1D数组