Я пишу класс, который будет использоваться для выполнения некоторых вычислений по набору значений с масштабированием, основанным на весу для каждого значения. Значения и веса поставляются в конструктор класса. Класс будет частью внутренней библиотеки, поэтому я хочу установить как можно меньше ограничений на структуры данных клиентов - некоторые клиенты будут использовать векторы structs или std :: pairs, а также другие отдельные матрицы OpenCV. Во время разработки я принимал итераторы старта/конца и полагался на парный механизм (val = it->first
, weight = it->second
).Как принять аргументы функции типа пары
Как это можно сделать лучше, без лишних хлопот для программиста на другом конце? Как правило, что считается наилучшей практикой при наличии такого рода многомерного ввода?
Возможно, я плотный, но я действительно не понимаю, как 'get <0> (p)' и 'get <1> (p)' являются улучшением по сравнению с 'p.first' и' p.second'. – sbi
Потому что они могут быть реализованы для любого класса без изменения этого класса? Потому что они абстрагируют разницу между парой и кортежем? Потому что вам не нужно знать английские цифры? – UncleBens
@UncleBens: Последние два я понимаю (хотя я не вижу в этом большого преимущества). Первого я не получу. – sbi