C++ C++;向量-有什么方法可以在for循环内复制向量并在循环外使用?

C++ C++;向量-有什么方法可以在for循环内复制向量并在循环外使用?,c++,C++,我有一个do-while循环,它在向量清除之前复制向量,为for循环再次运行腾出空间。我尝试了以下方法(将向量声明为全局向量): std::向量z; //一堆代码 做{ //一堆代码 双v_尺寸=v.尺寸(); 对于(int i=0;i选项; 做{ 双v_尺寸=v.尺寸(); 对于(int i=0;i

我有一个do-while循环,它在向量清除之前复制向量,为for循环再次运行腾出空间。我尝试了以下方法(将向量声明为全局向量):

std::向量z;
//一堆代码
做{
//一堆代码
双v_尺寸=v.尺寸();
对于(int i=0;i
这确实有效,但我的理解是,它的编程实践很糟糕,可能会在不同的编译器上得到一些奇怪的结果。我还收到一条错误消息(在
push_back
所在的行上):

隐式转换将符号:“int”更改为
'std::_1::vector::size\u type'(又名
'无符号长')
我对C++和编码都很陌生。因此,如果这里有任何老兵愿意帮助或解决这个问题,我们将不胜感激

以下是更多上下文中的一些附加代码,以澄清:

#包括
#包括
int main(){
std::向量v;
std::向量z;
int选项;
std::cout>选项;
做{
双v_尺寸=v.尺寸();
对于(int i=0;i
您得到的错误是因为您试图比较
int
double

如果您试图将一个向量的内容复制到另一个向量中。你所做的不是最好的方式

有几种方法

资料来源:

使用
=
运算符
std::vectorVec1{1,2,3,4,5};
标准::向量vec2=vec1;
通过构造函数传递向量
std::vectorVec1{1,2,3,4,5};
std::vec2(vec1);
使用
std::copy
std::vectorVec1{1,2,3,4,5};
std::vec2载体;
std::copy(vec1.begin(),vec1.end(),back_inserter(vec2));
分配
std::vectorVec1{1,2,3,4,5};
std::vec2载体;
赋值(vec1.begin(),vec1.end());
遍历向量 我相信一些额外的知识可以帮助你

也许你已经知道了,也许你不知道。但是你提到的迭代向量的方法也不是最好的,还有更好的方法

介绍。对一系列值进行迭代的更好、更清晰的方法

语法 事情是这样的
for(范围声明:范围表达式)

根据我们的例子

std::vec{4,62,36,54};
用于(自动i:vec){

std::您是否希望使用
size\t v_size=v.size();
而不是
double v_size=v.size();
,这与您在问题标题中陈述的问题无关。关于
z.push_(v[i])
如果不知道用于实例化这些向量的具体类型,我们就无法判断。要复制向量,只需执行以下操作:
std::vector z=v;
,将
T
替换为向量所包含的任何类型。我很困惑您在这里真正做的是什么。复制向量是通过
操作符=
完成的通常,为什么您有在这里循环?
std::向量z(v)
也是一个选项。很难理解上面的代码,或者你实际上想做什么,但毫无疑问,复制一个向量到其他地方使用是可能的。复制一个向量是通过
z=w;
而不是通过循环来完成的。好吧,我知道我不应该复制这么远的向量。但是代码循环,所以它需要s将第一个向量添加到第二个向量中的次数基本上与它需要的次数相同。我无法用常规方法实现这一点,当我以常规方法复制它时,其余的代码无法在我的循环中添加新向量…@user14350967
std::copy(vec1.begin(),vec1.end(),back_inserter(vec2));
基本上实现了添加到“输出”向量。您可以在结束时清除原始向量loop@user14350967如果您想记住原始值,只需在进入循环之前进行复制?
Implicit conversion changes signedness: 'int' to
'std::__1::vector<int, std::__1::allocator<int> >::size_type' (aka
'unsigned long')