Есть список предметов и атрибутов.
struct Item { double a, b; Item (double a_, double b_): a(a_), b(b_){}};
typedef std::vector <Item> TItems;
typedef std::vector <double> TAttributes;
Я пытаюсь отсортировать элементы по атрибутам, используя список пар:
int main(int argc, char* argv[])
{
TItems items;
items.push_back(Item (1.0, 2.0 ));
items.push_back(Item (3.0, 4.0 ));
items.push_back(Item (5.0, 6.0 ));
TAttributes attributes;
attributes.push_back(8);
attributes.push_back(7);
attributes.push_back(9);
std::pair <TAttributes, TItems> pairs;
//No element has been coppied
std::copy (pairs.first.begin(), pairs.first.end(), std::back_inserter (attributes));
//No element has been coppied
std::copy (pairs.second.begin(), pairs.second.end(), std::back_inserter (items));
std::sort (pairs.first.begin(), pairs.first.end());
}
Есть 2 проблемы:
A] неподходящая реализация копирования (элемент не был скопирован)
B] слишком "прикрученный" код.
Есть ли более простой способ сортировки списка элементов с использованием другого списка атрибутов?
Как правильно выполнить операцию копирования?