array的练习
array操控自定义类型
题目:
就将mm的姓名和年龄, 通过array操控自定义类型打印出来
知识点:
1.构造函数时候,利用初始化列表
2.新版的for循环
3.写了一个类,来做array的数据类型,用结构体也是一样的
注意: array如果进行不赋初值的创建,
就必须要用一个无参的构造函数,否则就会报错
// array操作自定义类型 #include<iostream> #include<array> #include<string> using namespace std; class MM { public: MM() { } MM(string m_name, int m_age):name(m_name), age(m_age) //初始化列表 { } void printDate() { cout << age << " " << name << endl; } private: int age; string name; }; void arrayTest() { array<MM, 3> mm; //不赋初值的创建, 必须要用无参数构造函数 mm[0] = MM("温柔", 10); //赋值操作 mm[1] = MM("了", 15); mm[2] = MM("岁月", 18); for (auto &v: mm) //新版for循环 { v.printDate(); } } int main() { arrayTest(); system("pause"); return 0; }
array的模拟
vector的练习
vector操控自定义类型
思路知识点,与前面array操控自定义类型一样
不过
这里类外构建了一个PrintDate()函数, 来打印
不懂的可以看一下
#include<iostream> #include<string> #include<vector> using namespace std; class MM { public: MM(int m_age, string m_name) : age(m_age), name(m_name) { } void printDate() { cout << age << " " << name << endl; } private: int age; string name; }; void PrintDate(vector<MM> mm) { for (auto& v : mm) { v.printDate(); } } void vectorTest() { vector<MM> mm; mm.push_back(MM(10, "温柔了")); mm.push_back(MM(18, "岁月")); PrintDate(mm); } int main() { vectorTest(); system("pasue"); return 0; }
vector的嵌套模板
#include<iostream> #include<vector> #include<string> using namespace std; struct M { int age; string name; }; ostream& operator << (ostream & out, const M & object) { out << object.name << " " << object.age << endl; return out; } istream& operator >> (istream& in, M& object) { in >> object.name >> object.age; return in; } template <class T> class MM { public: void insertDate(T date) { this->date.push_back(date); } void printDate() { cout << "姓名\t" << " " << "年龄\t" << endl; for (auto& v : date) { cout << v << endl; } } private: vector <T> date; }; int main() { MM<M> mm; //实例化对象 M tmp; cout << "请输入美女夫人信息" << endl; cin >> tmp; mm.insertDate(tmp); mm.printDate(); system("pause"); return 0; }