C++ vector 赋值
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C++ vector 赋值相关的知识,希望对你有一定的参考价值。
我自定义了一个类CEdge。 然后定义一个二维向量 vector<vetor<CEdge*>> v
在引用的时候,该怎样写才是一个CEdge类 。我写的是v[i][j],好像不能够访问CEdge里的私有成员 ,也不能赋值
改为
vector<vetor<CEdge> > v
就可以用v[i][j] 就可以访问追问
比如说类里面私有成员 head tail
然后一个函数set
void CEdge::set(int a,int b)
head=a;
tail=b;
赋值的时候用v[i][j].set(1,1)
C++ 如何将一个vector内容赋值给另一个vector?(注意:用等号赋值,有坑!过了生命周期就不行了)
在c/c++中,将一个vector内容赋值给另一个vector的方法大概有如下四个:
方法1:
vector<int> v1(v2); //声明
方法2:使用函数assign进行赋值:
vector<int> v1; //声明v1
v1.assign(v2.begin(), v2.end());//将v2赋值给v1
方法3:使用swap进行赋值:
vector<int> v1();
v1.swap(v2); //将v2赋值给v1
方法4:使用最笨的方法,即使用迭代器和循环语句赋值的方法。其方法运行效率较差
vector<int>::iterator it;//声明迭代器
for(it = v2.begin();it!=v2.end();++it)//遍历v2,赋值给v1
v1.push_back(it);
有网友提出用等号赋值,这个有坑啊,出了生命周期就不行了!
#pragma warning(disable : 4996)
#include <stdio.h>
#include <stdlib.h>
#include <vector>
#include <iostream>
using namespace std;
void fun(vector<int> vec)
vector<int> temp;
temp.push_back(0);
temp.push_back(1);
vec = temp; //用等号给容器赋值,有坑!
cout << "in function" << endl;
for (auto i : vec)
cout << i << endl;
int main()
vector<int> vec;
fun(vec);
cout << "out function" << endl;
for (auto i:vec)
cout << i << endl;
return 0;
ubuntu x64编译运行结果:
in function
0
1
out function
可以看到,出了函数后,赋值就失效了。。。
参考文章:如何将一个vector内容赋值给另一个vector C/C++
20220919 奇了葩了,我用assign怎么也不行呢?
发现好像是我的程序有bug,一个是我pos结构那里坐标数据应该用double的,结果用了int;还有一个是从json节点获取值的时候,应该用getValueDouble,结果用了getValueInt。。。。
修复后就好了,,,
以上是关于C++ vector 赋值的主要内容,如果未能解决你的问题,请参考以下文章
C++ 如何将一个vector内容赋值给另一个vector?(注意:用等号赋值,有坑!过了生命周期就不行了)
C++ 如何将一个vector内容赋值给另一个vector?(注意:用等号赋值,有坑!过了生命周期就不行了)