C++ 和JAVA 中对容器传值的方式 、容器和类变量初始化

C++向容器传值(即拷贝内容)

eg:将vector传入map,然后修改这个vector,map中的vector不会改变


int main()
{
	vector<int> t;
	t.push_back(1);
	map<int ,vector<int> > mp;
	mp[2]=t;
	t.clear();
	cout<<mp[2].size()<<" "<<mp[2][0];
	
	return 0;
}

Java 向容器传引用

eg:将vector传入map,然后修改这个vector,map中的vector会改变


public class Main {
	static int N=1000005,cnt,INF=0x3f3f3f3f;
	
	public static void main(String args[]){
//		Scanner sc=new Scanner(System.in);
		Map<Integer,List<Integer>> mp=new HashMap<>();
		List<Integer> t=new ArrayList<>();
		t.add(1);
		mp.put(1, t);
		//t.clear();
		System.out.println(mp.get(1).size());
	}
}

C++容器和类变量初始化

容器

vector<int> v;容器自动分配了内存,但是大小为0,等价于下一行,不能按照下标赋值,但是可以调用push_back();

vector<int> v=vector<int>();手动分配了内存但是大小为0,赋值操作v[1]=1会出错

vector<int> v=vector<int>(10);手动分配了内存且大小为10,赋值操作v[1]=1可行

c++前面后面的类型都不能省略,必须指定,而Java可以省略后面的类型

普通的类变量

class node{
	public :
		int num=1;
};

int main()
{
	node t;
	cout<<t.num; 结果为1
	return 0;
}

说明类类型的变量声明时也会自动分配内存

Java

容器类
Vector<Integer> v;



Vector<Integer> v=new Vector<>();
等价于Vector<Integer> v=new Vector();
即前面必须制定元素类型,后面不必须
上面都是分配了内存,且大小为0

等同于C++:
vector<int> v;和vector<int> v=vector<int>();

类变量
class node
{
	public int num=10;
}

总结:

C++的类变量和和容器变量都会在声明时自动分配内存,不论是全局变量还是局部变量
Java类变量和容器变量不会声明时自动分配内存,需要手动分配,而手动分配不指定大小时同C++自动分配

一般用法

c++自动分配,java手动分配内存

C++:
vector<int > v; 

Java 
Vector<Integer> v=new Vector();
posted @ 2022-11-17 23:01  林动  阅读(5)  评论(0编辑  收藏  举报