📢 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 = std::get<std::string>(t);  // 型によるアクセス
  auto str   = std::get<std::string>(t);  // 型によるアクセス
  </syntaxhighlight>
  </syntaxhighlight>
<br><br>
<br><br>
73行目: 97行目:
<br><br>
<br><br>


== 構造化束縛を使用して分解 (C++17以降) ==
== タプルの連結 ==
<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 [num, text, value] = t;  // 各要素を個別の変数に分解
    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>