C++ 一维数组中的二维排序
假设我有一个这样的一维列表C++ 一维数组中的二维排序,c++,arrays,node.js,sorting,C++,Arrays,Node.js,Sorting,假设我有一个这样的一维列表 A8, C3, C7, F9, A3, V3, J2 如果我想按第一个字符的字母顺序和第二个字符的数字顺序对列表进行排序,我该怎么做 我假设我必须对某个排序进行优先级排序,并取消次要排序的优先级,例如: A1, B2, C1 A1肯定是第一位,但问题是,是否应该: {A1,C1,B2}或{A1,B2,C1} 我的最后一个问题是,如果我想对数字排序进行优先级排序,我假设我会将其作为第二种排序,而不是大多数语言中标准排序算法的第一种排序 我最关心的是对C中这样的实现进
A8, C3, C7, F9, A3, V3, J2
如果我想按第一个字符的字母顺序和第二个字符的数字顺序对列表进行排序,我该怎么做
我假设我必须对某个排序进行优先级排序,并取消次要排序的优先级,例如:
A1, B2, C1
A1肯定是第一位,但问题是,是否应该:
{A1,C1,B2}
或{A1,B2,C1}
我的最后一个问题是,如果我想对数字排序进行优先级排序,我假设我会将其作为第二种排序,而不是大多数语言中标准排序算法的第一种排序
我最关心的是对C中这样的实现进行排序++
struct CustomSort{
bool operator()(tuple<int,regex> const &lhs, tuple<int,regex> const &rhs){
return std::get<0>(lhs) > std::get<0>(rhs);
}
};
struct CustomSort{
布尔运算符()(元组常量和lhs、元组常量和rhs){
返回std::get(lhs)>std::get(rhs);
}
};
假设您的数组(arr
)是std::string
的容器,并且您希望对数值排序进行优先级排序(即C1
),您可以使用单个调用来完成(我在这里使用的是c++11 lambda,但如果需要,您可以使用自定义的比较器
):
您的数据结构是什么?一个字符串容器?是的,为了这个问题的目的,假设它是一个字符串数组,每个字符串都有字母表的第一个字符,第二个字符是数字。C++代码引用一个元组,但是请假设元组的第一个元素代表所讨论的数组。这个问题对您有意义吗?我希望这是清楚的。我只想做得对。你甚至可以做
返回std::tie(lhs[1],lhs[0])(避免生成无效比较器)。
std::sort(begin(arr), end(arr), [](std::string const& lhs, std::string const& rhs) {
return std::tie(lhs[1], lhs[0]) < std::tie(rhs[1], rhs[0]);
});
std::sort(begin(arr), end(arr));