C++ 在C+中创建指向另一个元素的向量+;

C++ 在C+中创建指向另一个元素的向量+;,c++,windows,visual-studio,vector,C++,Windows,Visual Studio,Vector,下午好 如果不复制std::vector,我似乎无法复制它。 我需要创建一个指向另一个std::vector的向量,而不复制每个值 如果我写 vector_1 = vector_0; 在监视窗口中,&vector_1和&vector_0具有完全不同的内存地址 与&vector\u 1[0]和&vector\u 0[0]相同,因此我理解此操作复制向量 但是,当我尝试编写&vector_1[0]=&vector_0[0]或 &vector\u 1=&vector\u 0 我得到了错误 错误C210

下午好

如果不复制std::vector,我似乎无法复制它。 我需要创建一个指向另一个std::vector的向量,而不复制每个值

如果我写

vector_1 = vector_0;
在监视窗口中,
&vector_1
&vector_0
具有完全不同的内存地址

&vector\u 1[0]
&vector\u 0[0]
相同,因此我理解此操作复制向量

但是,当我尝试编写
&vector_1[0]=&vector_0[0]
&vector\u 1=&vector\u 0

我得到了错误
错误C2106'=':左操作数必须是l值

我还试着用这种方法创建一个向量:

std::vector vector_1(vector_0[0],vector_0.size())
,但
&向量_1
&向量_0
&向量_1[0]
&向量_0[0]
显示不同的内存地址,因此它似乎再次复制元素


谢谢,

您可以创建对向量的引用

std::vector<T> & vector_1 = vector_0;
std::vector&vector_1=vector_0;
这样,
vector_1
将是
vector_0
的别名,地址相同,所有元素都相同,不会发生复制


编辑


如果您想让
vector\u 0
vector\u 1
共享同一个向量的所有权,但成为独立对象,请使用
共享的ptr
,如回答中所述。

您可以创建向量的引用

std::vector<T> & vector_1 = vector_0;
std::vector&vector_1=vector_0;
这样,
vector\u 1
将是
vector\u 0
,具有相同地址和所有元素相同,不进行复制


编辑


如果您想让
vector\u 0
vector\u 1
共享同一个向量的所有权,但成为独立的对象,请使用
共享的ptr
,如回答中所述。

如果您需要
y
x
是同一个向量,请将其作为参考:

std::vector<int> x = {1,2,3,4,5};
std::vector<int> & y = x;

assert(std::addressof(x) == std::addressof(y));

如果您需要
y
来共享
x
的所有权,请将它们都设置为
std::shared\u ptr

auto x = std::make_shared<std::vector<int>>({1,2,3,4,5});
auto y = x;

assert(x.get() == y.get());

如果需要将
y
作为与
x
相同的向量,请将其作为参考:

std::vector<int> x = {1,2,3,4,5};
std::vector<int> & y = x;

assert(std::addressof(x) == std::addressof(y));

如果您需要
y
来共享
x
的所有权,请将它们都设置为
std::shared\u ptr

auto x = std::make_shared<std::vector<int>>({1,2,3,4,5});
auto y = x;

assert(x.get() == y.get());

std::vector
不支持共享其状态。事实上,没有任何类型支持将其地址分配给@François,其他任何类也不支持。也许您需要一个
std::shared\u ptr
。为什么需要这个?你就不能把它传递给/创建一个对向量的引用吗?
auto&vector\u 1=vector\u 0应该工作吗?
std::vector
不支持共享其状态。事实上,没有任何类型支持将其地址分配给@François,其他任何类也不支持。也许您需要一个
std::shared\u ptr
。为什么需要这个?你就不能把它传递给/创建一个对向量的引用吗?
auto&vector\u 1=vector\u 0应该工作吗?