問題タブ [string-view]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
70676 参照

c++ - string_view とは何ですか?

string_viewC++ Library Fundamentals TS ( N3921 ) 内で提案された機能であり、C++17 に追加されました。

私が理解している限りでは、文字列として表示可能なものを格納できる任意のタイプのコンテナのビューである、ある種の文字列「概念」を表すタイプです。

  • これは正しいですか ?
  • 正規の const std::string&パラメータ タイプは になりstring_viewますか?
  • string_view他に考慮すべき重要な点はありますか?
0 投票する
2 に答える
1975 参照

c++ - コピーせずに文字列に外部バッファを使用する

const string&たとえば、入力として取得する関数があるとします。

そしてconst char* buffer;、サイズがわかっている内部バッファーがあります。

文字列をインラインで作成すると、まだ 1 つのコピーが発生すると思います。

しかし、すべてが一定であるため、バッファをコピーする必要はありません。文字列クラスが作成するバッファではなく、文字列クラスの機能が必要なだけです。

コピーが発生するかどうかはわかりませんが、文字列のコンストラクターを見ると、すべてがコピーが発生すると言いました。コンパイラの最適化がそのような状況を理解できるかどうかはわかりませんし、コピーが行われたかどうかを確認する方法を見つけることができませんでした。

文字列に外部バッファを使用する方法はありますか、または少なくともコピーが行われるかどうかを確認する方法はありますか。現在、std 文字列と c++11 を使用しています。

0 投票する
1 に答える
1454 参照

c++ - gsl::array_view> std::vector から

クラスにメンバー変数std::vector<std::string>があり、 と の組み合わせを使用して、メンバー関数から不変ビューとしてそれを返したいとしgsl::array_viewますgsl::cstring_view。残念ながら、以下はコンパイルされません。

cstring_viewこれは、array_viewを作成できるコンテナーがないためです。だから私の質問は: type のメンバーのようなものを明示的に追加せずにそのような構造を使用する方法はありstd::vector<gsl::cstring_view<>>ますか?これは明らかに望ましくありませんか?

編集

そのような「変換」ビューは、より一般的に使用できるように思えます。実装定義のストレージ アプローチを公開せずに、生のポインターとしてクラスのユーザーに公開したいvectorなどの所有ポインターを持つことを検討してください。考え?std::vector<std::shared_ptr<T>>array_viewgsl::array_view<const T*>

0 投票する
2 に答える
8258 参照

boost - boost::string_ref と boost::string_view の違い

Boost はstring_view、C++17 の一部となるの 2 つの異なる実装を提供します。

  • boost::string_refutility/string_ref.hpp
  • boost::string_viewcore/string_view.hpp

これらの間に大きな違いはありますか?今後はどちらを優先すべきですか?

注: Boost 1.61 で気づいたのですが、boost::log は string_view を優先して string_ref を非推奨にしました。指標なのではないでしょうか?( http://www.boost.org/users/history/version_1_61_0.html )

0 投票する
1 に答える
990 参照

c++ - std::string_view コンパイル時のハッシュ

C++17 string_viewのstd::hash 関数は constexpr のものではないようです。

const char[] にバインドされた文字列ビューは、コンパイル時にハッシュされる可能性があるように思えます (これは非常に便利です)、またはこれを妨げるものはありますか?