STL容器篇之array与vector (练习篇)

简介: STL容器篇之array与vector (练习篇)

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;
}

相关文章
|
3月前
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
74 2
|
3月前
|
存储 C++ 容器
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器1
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
78 5
|
3月前
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
92 2
|
5月前
|
安全 编译器 容器
C++STL容器和智能指针
C++STL容器和智能指针
|
8月前
|
Python
使用array()函数创建数组
使用array()函数创建数组。
154 3
|
1月前
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
112 67
|
3月前
|
人工智能 前端开发 JavaScript
拿下奇怪的前端报错(一):报错信息是一个看不懂的数字数组Buffer(475) [Uint8Array],让AI大模型帮忙解析
本文介绍了前端开发中遇到的奇怪报错问题,特别是当错误信息不明确时的处理方法。作者分享了自己通过还原代码、试错等方式解决问题的经验,并以一个Vue3+TypeScript项目的构建失败为例,详细解析了如何从错误信息中定位问题,最终通过解读错误信息中的ASCII码找到了具体的错误文件。文章强调了基础知识的重要性,并鼓励读者遇到类似问题时不要慌张,耐心分析。
|
3月前
|
存储 Java
Java“(array) <X> Not Initialized” (数组未初始化)错误解决
在Java中,遇到“(array) &lt;X&gt; Not Initialized”(数组未初始化)错误时,表示数组变量已被声明但尚未初始化。解决方法是在使用数组之前,通过指定数组的大小和类型来初始化数组,例如:`int[] arr = new int[5];` 或 `String[] strArr = new String[10];`。
111 2
|
3月前
|
存储 JavaScript 前端开发
JavaScript Array(数组) 对象
JavaScript Array(数组) 对象
39 3
|
3月前
|
数据采集 JavaScript 前端开发
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)
JavaScript中通过array.filter()实现数组的数据筛选、数据清洗和链式调用,JS中数组过滤器的使用详解(附实际应用代码)