<p>既然你提到你不喜欢指针,你可以使用引用,但是向量不能存储引用(因为它们不可复制和分配)。但是,<code>std::reference_wrapper</code>将引用包装在可复制和可分配对象中。在</p>
<blockquote>
<p><code>std::reference_wrapper</code> is a class template that wraps a reference in a copyable, assignable object. It is frequently used as a mechanism to store references inside standard containers (like <code>std::vector</code>) which cannot normally hold references.</p>
<p><sub>source: <a href="http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper" rel="nofollow noreferrer">http://en.cppreference.com/w/cpp/utility/functional/reference_wrapper</a></sub></p>
</blockquote>
<pre><code>vector<Car> collection1;
collection1.emplace_back("black", "Ford");
collection1.emplace_back("white", "BMW");
collection1.emplace_back("yellow", "Audi");
vector<std::reference_wrapper<Car>> collection2{collection1.begin(),
collection1.end()};
</code></pre>
<p>这样,<code>collection2</code>引用的对象与<code>collection1</code>引用的对象相同。例如:</p>
^{pr2}$
<p><strong>重要:</strong></p>
<p>请注意,不建议使用这种方式,因为您必须有另一个实体来管理对<code>collection1</code>的插入和删除,并对<code>collection2</code>执行适当的操作。@<a href="https://stackoverflow.com/users/3545273/serge-ballesta">Serge Ballesta</a>的答案比我的好。使用<code>std::shared_ptr</code>。试着去爱和拥抱指针:)</p>