C++工作笔记-对容器模板的初步认识

如下面的这套代码:

MyClass.h

#pragma once

#include <iostream>
#include <vector>
#include <string>
using namespace std;

template<typename T>
class MyClass{
private:
	T x;
public:
	MyClass(T a) :x(a){}
	T& getX(){
		return x;
	}
	friend ostream& operator << (ostream &os, MyClass myclass){
		//os << "(" << myclass.x << "," << myclass.y << ")";
		for (int i = 0; i < myclass.getX().size(); i++){
			os << myclass.x[i] << endl;
		}
		return os;
	}
};

main.cpp

#include "MyClass.h"


void main(){
	vector<int> inVe;
	inVe.push_back(1);
	inVe.push_back(2);
	inVe.push_back(3);
	inVe.push_back(4);

	MyClass<vector<int>> myclassVc(inVe);
	cout << myclassVc;
	system("pause");
}

这里,来看下局部变量的值:


发现还真了可以用。


这种模板操作感觉好奇怪啊!

也不知道这么写好不好!


根据网上的代码可以知道,一般写容器模板应该这样做:

MyClass.h

#pragma once

#include <iostream>
#include <vector>
#include <string>
using namespace std;

template<typename T>
class MyClass{
private:
	vector<T> x;
public:
	MyClass(){}
	vector<T>& getX(){
		return x;
	}
	friend ostream& operator << (ostream &os, MyClass myclass){
		//os << "(" << myclass.x << "," << myclass.y << ")";
		for (int i = 0; i < myclass.getX().size(); i++){
			os << myclass.x[i] << endl;
		}
		return os;
	}
};

main.cpp

#include "MyClass.h"


void main(){
	MyClass<int> myclassVc;
	myclassVc.getX().push_back(1);
	myclassVc.getX().push_back(2);
	myclassVc.getX().push_back(3);
	myclassVc.getX().push_back(4);
	myclassVc.getX().push_back(5);
	cout << myclassVc;
	system("pause");
}

猜你喜欢

转载自blog.csdn.net/qq78442761/article/details/80925806