Un problema di progettazione comune in cui mi imbatto è che raggruppo insieme due variabili e quindi non riesco a fare riferimento a esse in modo significativo.Posso usare std :: pair, ma rinominare i nomi dei membri .first e .second?
std::pair<int,int> cords;
cord.first = 0; //is .first the x or y coordinate?
cord.second = 0; //is .second the x or y coordinate?
ho pensato di scrivere le strutture di base, invece, ma poi ho perso un sacco di benefici che vengono con std::pair
:
- make_pair
- operatori non membro sovraccarichi
- di swap
- get
- ecc.
C'è un modo per rinominare o fornire un identificativo alternativo per i membri di dati first
e second
?
speravo di sfruttare tutte le funzioni che accettano std::pair
,
ma comunque in grado di usarli nel modo seguente:
std::pair<int,int> cords;
//special magic to get an alternative name of access for each data member.
//.first and .second each have an alternative name.
cords.x = 1;
assert(cords.x == cords.first);
Non credo che si può. Magari fai un corso che avvolge std :: pair? –
Probabilmente eccessivo per l'attività come definito, ma [BOOST_FUSION_DEFINE_STRUCT] (http://www.boost.org/doc/libs/1_59_0/libs/fusion/doc/html/fusion/adapted/define_struct.html) consente di generare una struttura che ha operatori di confronto, scambio, ecc generati automaticamente, ma con nomi/tipi di campi personalizzati. – Mankarse
E riguardo 'struct cord: std :: pair {int & x = this-> first; int & y = this-> second; }; '? –
Slava