トークン化関数の値のベクトルがtokenize()
であるとします。私はそれが2つの値しか持たないことを知っています。最初の値をa
に、2番目の値をb
に保存します。 Pythonでは、私はどうなる:ベクトルを値に分割する
a, b = string.split(' ')
私が醜い方法でそのようにそれを行うことができます:
vector<string> tokens = tokenize(string);
string a = tokens[0];
string b = tokens[1];
しかし、それはコード、余分な変数、および以下可読性の2本の余分なラインを必要とします。
どのように私はC++でこのようなことをきれいで効率的なやり方でやっていますか?
EDIT:私は、効率が非常に重要であることを強調しなければなりません。あまりにも多くの答えがこれを満たさない。これにはmy tokenization functionの変更が含まれます。
EDIT 2:私はコントロール外の理由でC++ 11を使用していますが、Boostも使用できません。
as_tuple<N>
が
vector<string>
への変換をいくつかに-宣言する機能です
auto [a,b] = as_tuple<2>(tokenize(str));
:構造化されたバインディングを持つ
トークンの代わりにC++の方法で繰り返します – BeyelerStudios
世界が本当に虹と蝶ですが、それに2つの値しか持たないことがわかっているのなら、なぜ一般的に使われているコンテナを返す関数を使っていますか?任意の長さの結果セットの?あなたの2つの 'std :: string'オブジェクトを宣言し、それを単に(文字列のペアを取得する)' tokenize_pair() '関数に渡して、パラメータを参照し、それを良いものと呼んでください。 – WhozCraig
@WhozCraigこのような機能の実装方法はわかりません。私はPythonの背景から来ています。このような機能は非常に便利です。 –