タグ

C++17に関するa-hamahamaのブックマーク (8)

  • 競プロに便利な C++17 新機能まとめ - Qiita

    AtCoder の言語アップデート で、C++17 対応コンパイラが使えるようになりました。やったー! この記事では、競技プログラミングに役立つ C++17 の新しい標準ライブラリ・言語機能を 16 個紹介します。 サンプルコードは、AtCoder の GCC 9.2.1 システムで動作を確認しています。 C++17 標準ライブラリ機能 1. 値を範囲内に収める std::clamp(x, min, max) 値 x を、min 以上、max 以下に収めてくれる関数です。 これまで std::max(std::min(x, max), min) と書いてたのが 1 つの関数で済みます。 #include <bits/stdc++.h> int main() { // 値を 0 以上 100 以下に収める std::cout << std::clamp(50, 0, 100) << '\n'

    競プロに便利な C++17 新機能まとめ - Qiita
  • C++17の新機能 連想コンテナ編 / new features of C++17 - associative containers

    C++17 で(非順序)連想コンテナに追加された以下の新機能の紹介です。 ・ユニークキーマップの挿入インタフェース向上 (Improved insertion interface for unique-key maps) ・(非順序)連想コンテナの接合 (Splicing Maps and Sets)

    C++17の新機能 連想コンテナ編 / new features of C++17 - associative containers
  • Microsoft C/C++ 言語の準拠

    Visual Studio での Microsoft C/C++ コンパイラ (MSVC) の標準への準拠は、進行中の作業です。 ここでは、Visual Studio のバージョン別に、ISO 標準の C/C++ 言語およびライブラリの準拠についてまとめます。 C++ コンパイラと標準ライブラリの各機能の名前は、その機能を説明する ISO 標準の C++ 提案書にリンクしています (発行時に利用可能な場合)。 サポート状況列には、その機能が最初にサポートされた Visual Studio のバージョンが記載されています。 準拠の強化の詳細については、「Visual Studio の C++ 準拠の強化」を参照してください。 その他の変更の一覧については、「Visual Studio の Visual C++ の新機能」をご覧ください。 以前のバージョンにおける準拠の変更点については、Vis

    Microsoft C/C++ 言語の準拠
  • std::string_viewでは値渡しを利用する - yohhoyの日記

    C++1z(C++17)標準ライブラリ提供のstd::string_view*1 を関数パラメータ型で利用する場合、原則として値渡し(pass-by-value)スタイルとすること。 C++14以前でconst string&としていた関数パラメータ型は、ほとんどのケースでstring_viewへと単純置換できる。なお関数プロトタイプでconst string_viewとしてもパラメータ型のトップレベルconst修飾は無視されるため*2、const修飾は関数利用者へは影響しない。string_view型はもともと “読取専用の文字列ビュー” として設計されており、関数実装側にとってもconst修飾のメリットはほぼ無い。 // C++1z(C++17) #include <string_view> // C++14以前 // void process(const std::string& s

    std::string_viewでは値渡しを利用する - yohhoyの日記
  • 文字列リテラルからのstd::string_view構築 - yohhoyの日記

    C++1z(C++17)において文字列リテラルから文字列ビューstd::string_viewへ変換する場合、暗黙の型変換ではなくユーザ定義リテラル""svの明示利用が望ましい。 string_viewクラスはC文字列(const char*)からの非explicit変換コンストラクタを提供する。 string_viewユーザ定義リテラルはstd::literals::string_view_literals名前空間で定義される。*1 計算量(complexity):暗黙コンストラクタでは文字列リテラル長に比例 O(N) するが、ユーザ定義リテラル""svでは定数時間 O(1) が保証される。 現実問題として計算量が問題になるほど長い文字列リテラルを扱うケースは稀だろう。また同コンストラクタはconstexpr指定されているため、コンパイル時最適化によって同一アセンブリが出力されると期待で

    文字列リテラルからのstd::string_view構築 - yohhoyの日記
  • 江添亮の詳説C++17

    はじめに 書は2017年に規格制定されたプログラミング言語C++の国際規格、ISO/IEC 14882:2017の新機能をほぼすべて解説している。 新しいC++17は不具合を修正し、プログラマーの日々のコーディングを楽にする新機能がいくつも追加された。その結果、C++の特徴であるパフォーマンスや静的型付けは損なうことなく、近年の動的な型の弱い言語に匹敵するほどの柔軟な記述を可能にしている。 人によっては、新機能を学ぶのは労多くして益少なしと考えるかもしれぬが、C++の新機能は現実の問題を解決するための便利な道具として追加されるもので、仮に機能を使わないとしても問題はなくならないため、便利な道具なく問題に対処しなければならぬ。また、C++の機能は一般的なプログラマーにとって自然だと感じるように設計されているため、利用は難しくない。もしC++が難しいと感じるのであれば、それはC++が解決すべ

  • C++17つまみぐい - Qiita

    この記事は、C++ Advent Calendar 2016の17日目です。 こんにちは。聖夜も来週に迫ってまいりました今日このごろ、皆様に置かれましてはどうお過ごしでしょうか。私はAdCの締切に追われています。 さて、先日もアドベントカレンダーに一記事を書かせていただきましたが、今回は初心者向けカレンダーではないので初心者向けではない内容を書こうと思います。 いよいよ来年に迫ってきたC++17、欲しかった機能が規格に盛り込まれたかどうかは分かりませんが、コンパイラーの実装も結構進んできて、"-std=c++1z"オプションを使えば試せるものも増えてきました。 この記事ではそんな新機能のうち、コア言語機能で、gcc/clangどちらかのコンパイラーに実装されているものを試していこうと思います。 どれが実装されているかとか自分で調べるのは面倒なので、こちらを参照したいと思います。各コンパイ

    C++17つまみぐい - Qiita
  • C++1zの言語拡張まとめ - Faith and Brave - C++で遊ぼう

    2017年中に改訂される予定のC++14の次のバージョン、仮称C++1zの更新内容をまとめました。正式名称はISO/IEC 14882:2017、通称C++17になる予定です。 C++1zの概要 C++17は、C++11ほど大きな変更はありませんが、重要な言語機能(構造化束縛とか)や、広く適用できるライブラリ機能が多く入っています。ライブラリは、ファイルシステムが入るのが大きいですね。ようやく標準ライブラリのみで、ファイルサイズを取得したり、ファイルのコピーや移動などを扱えるようになります。 策定体制として、Study Group (SG)と呼ばれる専門家グループがたくさん作られ、そこで同時並行に議論、策定が進められていた仕様のうち、固まったものがいくつかC++1zで導入されます。 それぞれの専門家グループで考えられた仕様はTechnical Specification (TS)という単位

    C++1zの言語拡張まとめ - Faith and Brave - C++で遊ぼう
  • 1