通过 std::pair<std::array<std::array<u_int16_t,2>,1>,std::string>> 直接读取参考值
read values of reference direct by std::pair<std::array<std::array<u_int16_t,2>,1>,std::string>>
谁能告诉我如何直接访问各个值?
要真正使用out的指代而不是存储在临时变量PosTextfield和val之间。
#include <iostream>
#include <utility>
#include <string>
#include <cstdint>
#include <array>
using Cursor_matrix = std::array<std::array<uint16_t,2>, 1>;
void foo(const std::pair<Cursor_matrix,std::string> &out)
{
Cursor_matrix PosTextfield;
PosTextfield = std::get<0>(out);
std::string val = std::get<1>(out);
std::cout << PosTextfield[0][0] << PosTextfield[0][1] << val << "\n";
}
int main()
{
Cursor_matrix pos;
pos[0][0] = 1;
pos[0][1] = 2;
std::string str = "hello";
std::pair<Cursor_matrix, std::string> pos_text;
pos_text = std::make_pair(pos, str);
return 0;
}
std::get
returns 引用。您可以只存储这些引用:
const auto& PosTextfield = std::get<0>(out);
const auto& val = std::get<1>(out);
或
const auto& PosTextfield = out.first;
const auto& val = out.second;
或者您可以根据需要用实际类型替换 auto
关键字。 const
也可以删除,因为 auto
会推导出它,但是明确地写它会使 reader 清楚这两个引用是 non-modifiable.
这不会创建任何新对象。引用引用传递给函数的对的元素。
或者直接引用要在 out.first
和 out.second
或 std::get<0>(out)
和 std::get<1>(out)
中使用它们的元素。
您可以通过以下方式访问 std::pair
的元素:
pos_text.first; // Returns CursorMatrix
pos_text.second; // Returns std::string
因此您可以将 foo()
重写为:
void foo(const std::pair<Cursor_matrix, std::string>& out)
{
std::cout << out.first[0][0] << out.first[0][1] << out.second << "\n";
}
谁能告诉我如何直接访问各个值? 要真正使用out的指代而不是存储在临时变量PosTextfield和val之间。
#include <iostream>
#include <utility>
#include <string>
#include <cstdint>
#include <array>
using Cursor_matrix = std::array<std::array<uint16_t,2>, 1>;
void foo(const std::pair<Cursor_matrix,std::string> &out)
{
Cursor_matrix PosTextfield;
PosTextfield = std::get<0>(out);
std::string val = std::get<1>(out);
std::cout << PosTextfield[0][0] << PosTextfield[0][1] << val << "\n";
}
int main()
{
Cursor_matrix pos;
pos[0][0] = 1;
pos[0][1] = 2;
std::string str = "hello";
std::pair<Cursor_matrix, std::string> pos_text;
pos_text = std::make_pair(pos, str);
return 0;
}
std::get
returns 引用。您可以只存储这些引用:
const auto& PosTextfield = std::get<0>(out);
const auto& val = std::get<1>(out);
或
const auto& PosTextfield = out.first;
const auto& val = out.second;
或者您可以根据需要用实际类型替换 auto
关键字。 const
也可以删除,因为 auto
会推导出它,但是明确地写它会使 reader 清楚这两个引用是 non-modifiable.
这不会创建任何新对象。引用引用传递给函数的对的元素。
或者直接引用要在 out.first
和 out.second
或 std::get<0>(out)
和 std::get<1>(out)
中使用它们的元素。
您可以通过以下方式访问 std::pair
的元素:
pos_text.first; // Returns CursorMatrix
pos_text.second; // Returns std::string
因此您可以将 foo()
重写为:
void foo(const std::pair<Cursor_matrix, std::string>& out)
{
std::cout << out.first[0][0] << out.first[0][1] << out.second << "\n";
}