std::vector
要素を持つ がありますn
。ここで、最後の要素を持つベクトルへのポインタを関数n-1
に渡す必要があります。
たとえば、 には がvector<int> foo
含まれています(5,2,6,87,251)
。 関数は を受け取りvector<int>*
、 へのポインターを渡したいと考えています(2,6,87,251)
。
イテレータを(安全に)取得し++foo.begin()
、それをポインタに変換して関数に渡すことはできますか? または を使用しますか&foo[1]
?
アップデート:関数を変更して、ポインタではなくイテレータを取るように勧められることがあります。私が言及した関数は の関数なので、私の状況ではそれは不可能のようですfind
。では、その場合、 の要素を新しいベクトルにunordered_set<std::vector*>
コピーし、そのポインタで を呼び出すことが唯一の選択肢でしょうか。非常に非効率的です。特に、最後の、次になどの要素を照会して にあるかどうかを確認するなど、多くのサブセットを照会する必要があるため、画家のシュレミールのようです。n-1
foo
find
n-1
n-2
unordered_set
ベストアンサー1
ここでは、イテレータの対応するポインタへの参照を取得するために使用します。
例:
string my_str= "hello world";
string::iterator it(my_str.begin());
char* pointer_inside_buffer=&(*it); //<--
[注意演算子*は参照したがって、参照に対して & を実行すると、アドレスがわかります。