调用返回std::pair的函数时,如何仅获取其第一个元素?
获取std::pair第一个元素的几种方法
好问题!你当前用std::tie搭配std::ignore的方式已经很规范了,但还有几种更适配不同场景或C++版本的写法,我来逐一说明:
直接访问
first成员(最简洁通用)
这是所有C++版本都支持的最直接方式,不需要额外变量,直接链式调用std::pair的first成员即可:bool myOtherFunction() { // 执行相关操作... return myFunction().first; }这种写法最紧凑,如果你只需要第一个元素,完全没必要额外声明变量,直接返回结果就行。
C++17结构化绑定(最清晰直观)
如果你使用C++17或更高版本,结构化绑定是更现代的写法,用占位符(比如_)表示忽略第二个元素,代码可读性拉满:bool myOtherFunction() { // 执行相关操作... auto [success, _] = myFunction(); return success; }这里的
_只是一个约定俗成的占位符,编译器会自动忽略这个未使用的变量,写法比std::tie更清爽。你的当前方案:
std::tie+std::ignore
你现在用的这种方式在C++11及以后都能正常工作,优势是可以保留success变量,方便后续代码复用:bool myOtherFunction() { // 执行相关操作... bool success; std::tie(success, std::ignore) = myFunction(); // 如果后续需要用到success变量,这里可以继续操作 return success; }这种写法明确表达了“我要第一个元素,忽略第二个”的意图,团队协作时也很容易理解。
总结一下:如果只需要返回第一个元素,优先用.first;用C++17+的话推荐结构化绑定;如果需要保留变量后续使用,std::tie的方式就很合适。
内容的提问来源于stack exchange,提问作者Julini
相关产品推荐
相关产品推荐

