Cho mình hỏi làm sao để lấy giá trị 1 phần tử trong hàm tuple trong C++?
VD:
std::tuple<int, float, std::string, int> tpl {4, 6.6, "hello", 7};
Mình search google không ra, nên nhờ mọi người giúp đỡ.
Cho mình hỏi làm sao để lấy giá trị 1 phần tử trong hàm tuple trong C++?
VD:
std::tuple<int, float, std::string, int> tpl {4, 6.6, "hello", 7};
Mình search google không ra, nên nhờ mọi người giúp đỡ.
xài std::get
int a = std::get<0>(tpl);
float b = std::get<1>(tpl);
std::string c = std::get<2>(tpl);
int d = std::get<3>(tpl);
.
có thể get theo kiểu dữ liệu, nhưng nếu tuple có 2 phần tử cùng kiểu dữ liệu trở lên thì ko compile được
float b = std::get<float>(tpl);
std::string c = std::get<std::string>(tpl);
.
nếu muốn tách tất cả các phần tử ra thì có thể xài std::tie
int a;
float b;
std::string c;
int d;
std::tie(a, b, c, d) = tpl;
.
nếu muốn tách tất cả mà bỏ qua chỉ 1 vài phần tử có thể xài chung với std::ignore
int a;
float b;
int d;
std::tie(a, b, std::ignore, d) = tpl;
.
nếu xài C++17 thì có thể viết gọn: http://en.cppreference.com/w/cpp/language/structured_binding
auto [a, b, c, d] = tpl; //a,b,c,d lần lượt là các copy của các phần tử trong `tpl`
auto& [a, b, c, d] = tpl; //a,b,c,d là tham chiếu tới các phần tử trong tpl
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?