📢 Webサイト閉鎖と移転のお知らせ
このWebサイトは2026年9月に閉鎖いたします。
新しい記事は移転先で追加しております。(旧サイトでは記事を追加しておりません)
編集の要約なし |
|||
| 25行目: | 25行目: | ||
std::tuple<int, std::string, double> t = {1, "hello", 3.14}; | std::tuple<int, std::string, double> t = {1, "hello", 3.14}; | ||
</syntaxhighlight> | |||
<br> | |||
<syntaxhighlight lang="c++"> | |||
// std::make_tupleメソッドを使用して作成する例 | |||
#include <tuple> | |||
#include <iostream> | |||
#include <string> | |||
void print_person(const std::tuple<std::string, int>& person) | |||
{ | |||
// std::getメソッドを使用して要素にアクセス | |||
std::cout << "名前: " << std::get<0>(person) << ", 年齢: " << std::get<1>(person) << std::endl; | |||
} | |||
int main() | |||
{ | |||
// std::make_tupleを使用して作成 | |||
// これは、型を明示的に記述する必要がない | |||
auto person = std::make_tuple("佐藤花子", 25); | |||
print_person(person); | |||
return 0; | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 32行目: | 56行目: | ||
#include <tuple> | #include <tuple> | ||
int first = std::get<0>(t); // インデックスによるアクセス | int first = std::get<0>(t); // インデックスによるアクセス | ||
auto str | auto str = std::get<std::string>(t); // 型によるアクセス | ||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||
| 73行目: | 97行目: | ||
<br><br> | <br><br> | ||
== | == タプルの連結 == | ||
<syntaxhighlight lang="c++"> | |||
#include <tuple> | |||
#include <iostream> | |||
#include <string> | |||
int main() | |||
{ | |||
// tuple_catメソッドを使用して複数のタプルを1つに結合 | |||
auto tuple1 = std::make_tuple(1, "A"); | |||
auto tuple2 = std::make_tuple(2.5, true); | |||
auto combined = std::tuple_cat(tuple1, tuple2); | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== 構造化束縛による要素の分解 (C++17以降) == | |||
<syntaxhighlight lang="c++"> | |||
// 構造化束縛による要素の分解の例 | |||
#include <tuple> | |||
#include <iostream> | |||
#include <string> | |||
// タプルを返す関数 | |||
std::tuple<int, std::string, bool> get_user_data() | |||
{ | |||
return {42, "山田太郎", true}; | |||
} | |||
int main() | |||
{ | |||
// 各要素を個別の変数に分解 | |||
auto [id, name, is_admin] = get_user_data(); | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== タプルサイズの取得 == | |||
<syntaxhighlight lang="c++"> | <syntaxhighlight lang="c++"> | ||
// | #include <tuple> | ||
#include <iostream> | |||
#include <string> | |||
int main() | |||
{ | |||
// コンパイル時に要素数を取得 | |||
constexpr size_t size = std::tuple_size<decltype(combined)>::value; | |||
std::cout << "タプルのサイズ: " << size << std::endl; | |||
auto | return 0; | ||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== 特定の型の要素を取得 (型を指定した要素へのアクセス) == | |||
<syntaxhighlight lang="c++"> | |||
#include <tuple> | |||
#include <iostream> | |||
#include <string> | |||
int main() | |||
{ | |||
auto tuple1 = std::make_tuple(1, "A"); | |||
auto tuple2 = std::make_tuple(2.5, true); | |||
auto combined = std::tuple_cat(tuple1, tuple2); | |||
// 型を指定して要素にアクセス | |||
std::string str = std::get<std::string>(combined); | |||
return 0; | |||
} | |||
</syntaxhighlight> | |||
<br><br> | |||
== タプル同士の比較 == | |||
<syntaxhighlight lang="c++"> | |||
#include <tuple> | |||
#include <iostream> | |||
#include <string> | |||
int main() | |||
{ | |||
auto t1 = std::make_tuple(1, "test"); | |||
auto t2 = std::make_tuple(1, "test"); | |||
bool is_equal = (t1 == t2); // 全要素を比較 | |||
} | |||
</syntaxhighlight> | </syntaxhighlight> | ||
<br><br> | <br><br> | ||