[英]How to alias pair member-data in C++?
I have a container of std::pair<int,int>
to store master-slave pairs.我有一个
std::pair<int,int>
的容器来存储主从对。
For better readability I want to use something like:为了更好的可读性,我想使用类似的东西:
using Master = std::pair<int,int>::first;
std::pair<int,int> myPair;
auto myMaster = myPair.Master;
What would be the correct syntax here?这里的正确语法是什么?
Thank you, in advance.先感谢您。
You can name a pointer-to-member您可以命名指向成员的指针
constexpr auto Master = &std::pair<int,int>::first;
std::pair<int,int> myPair;
auto myMaster = myPair.*Master;
An alternative would be to use the tuple-like get
access to std::pair
with a self-defined constant:另一种方法是使用类似元组的
get
访问std::pair
和自定义常量:
const std::size_t Master = 0;
std::pair<int,int> myPair;
auto myMaster = std::get< Master >( myPair );
Somewhat cleaner and more readable than pointered access IMHO.恕我直言,比指针访问更清晰、更易读。
I am going with the following:我要进行以下操作:
int main() {
cout<<"Hello World\n";
constexpr auto Master = &std::pair<int,int>::first;
std::pair<int,int> myPair;
std::pair<int,int> myPair2;
myPair.*Master = 321;
myPair2.*Master = 10;
cout<<myPair.*Master;
cout<<myPair2.*Master;
return 0;
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.