【发布时间】:2020-03-14 17:09:55
【问题描述】:
我有四个要相互排序的向量。
vector<string> color;
vector<string> shape;
vector<int> size;
每个向量的大小相同,每个向量元素相互关联,从而形成一行
{color[0], shape[0], size[0]}
{color[1], shape[1], size[1]}
{color[2], shape[2], size[2]}, etc
所以我要做的是按颜色对颜色向量进行排序,并根据重新排列的颜色向量对其他两个向量进行排序。然后在每组颜色(即红色)中,我想按形状排序并根据该排序重新排列大小向量。最后我想对每组颜色和形状中的大小向量进行排序。我想我知道该怎么做,但是感觉非常混乱且难以概念化/阅读(我还是 C++ 新手)。有没有简单的方法来完成这样的事情?
例如我想做这样的事情:
Blue Circle 1 -> Red Triangle 1
Red Triangle 1 -> Red Triangle 2
Blue Circle 3 -> Red Triangle 3
Red Triangle 3 -> Red Circle 1
Red Circle 2 -> Red Circle 2
Blue Triangle 1 -> Red Circle 3
Red Circle 1 -> Blue Triangle 1
Blue Triangle 3 -> Blue Triangle 2
Red Circle 3 -> Blue Triangle 3
Blue Circle 2 -> Blue Circle 1
Blue Triangle 2 -> Blue Circle 2
Red Triangle 2 -> Blue Circle 3
【问题讨论】:
-
您应该创建一个
Shape类或结构,然后创建一个std::vector<Shape>,然后您可以按颜色对其进行排序。 -
谢谢,我会调查的。这也能让我像我的例子那样做一个级联排序吗?
-
“级联”排序将仅取决于您的比较运算符。可以在
std::tuple上观察到您想要的排序示例(请参见示例代码):en.cppreference.com/w/cpp/utility/tuple/operator_cmp