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

相关文章
|
存储 缓存 C++
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
C++ 标准模板库(STL)提供了一组功能强大的容器类,用于存储和操作数据集合。不同的容器具有独特的特性和应用场景,因此选择合适的容器对于程序的性能和代码的可读性至关重要。对于刚接触 C++ 的开发者来说,了解这些容器的基础知识以及它们的特点是迈向高效编程的重要一步。本文将详细介绍 C++ 常用的容器,包括序列容器(`std::vector`、`std::array`、`std::list`、`std::deque`)、关联容器(`std::set`、`std::map`)和无序容器(`std::unordered_set`、`std::unordered_map`),全面解析它们的特点、用法
C++ 容器全面剖析:掌握 STL 的奥秘,从入门到高效编程
|
存储 搜索推荐 C++
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
273 9
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器2
|
存储 对象存储 C++
C++ 中 std::array<int, array_size> 与 std::vector<int> 的深入对比
本文深入对比了 C++ 标准库中的 `std::array` 和 `std::vector`,从内存管理、性能、功能特性、使用场景等方面详细分析了两者的差异。`std::array` 适合固定大小的数据和高性能需求,而 `std::vector` 则提供了动态调整大小的灵活性,适用于数据量不确定或需要频繁操作的场景。选择合适的容器可以提高代码的效率和可靠性。
|
存储 C++ 容器
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器1
【C++篇】深度剖析C++ STL:玩转 list 容器,解锁高效编程的秘密武器
280 5
|
存储 编译器 C++
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
【C++篇】揭开 C++ STL list 容器的神秘面纱:从底层设计到高效应用的全景解析(附源码)
283 2
|
7月前
|
测试技术 PHP 开发者
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
|
11月前
|
人工智能 Java
Java 中数组Array和列表List的转换
本文介绍了数组与列表之间的相互转换方法,主要包括三部分:1)使用`Collections.addAll()`方法将数组转为列表,适用于引用类型,效率较高;2)通过`new ArrayList&lt;&gt;()`构造器结合`Arrays.asList()`实现类似功能;3)利用JDK8的`Stream`流式计算,支持基本数据类型数组的转换。此外,还详细讲解了列表转数组的方法,如借助`Stream`实现不同类型数组间的转换,并附带代码示例与执行结果,帮助读者深入理解两种数据结构的互转技巧。
826 1
Java 中数组Array和列表List的转换
|
存储 Go 索引
go语言中的数组(Array)
go语言中的数组(Array)
302 67
|
11月前
|
JavaScript 前端开发 API
JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
array.map()可以用来数据转换、创建派生数组、应用函数、链式调用、异步数据流处理、复杂API请求梳理、提供DOM操作、用来搜索和过滤等,比for好用太多了,主要是写法简单,并且非常直观,并且能提升代码的可读性,也就提升了Long Term代码的可维护性。 只有锻炼思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~
|
11月前
|
移动开发 运维 供应链
通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
array.some()可以用来权限检查、表单验证、库存管理、内容审查和数据处理等数据校验工作,核心在于利用其短路机制,速度更快,节约性能。 博客不应该只有代码和解决方案,重点应该在于给出解决方案的同时分享思维模式,只有思维才能可持续地解决问题,只有思维才是真正值得学习和分享的核心要素。如果这篇博客能给您带来一点帮助,麻烦您点个赞支持一下,还可以收藏起来以备不时之需,有疑问和错误欢迎在评论区指出~

热门文章

最新文章

  • 1
    PHP 数组查找:为什么 `isset()` 比 `in_array()` 快得多?
    211
  • 2
    Java 中数组Array和列表List的转换
    826
  • 3
    JavaScript中通过array.map()实现数据转换、创建派生数组、异步数据流处理、复杂API请求、DOM操作、搜索和过滤等,array.map()的使用详解(附实际应用代码)
    653
  • 4
    通过array.reduce()实现数据汇总、条件筛选和映射、对象属性的扁平化、转换数据格式、聚合统计、处理树结构数据和性能优化,reduce()的使用详解(附实际应用代码)
    1425
  • 5
    通过array.some()实现权限检查、表单验证、库存管理、内容审查和数据处理;js数组元素检查的方法,some()的使用详解,array.some与array.every的区别(附实际应用代码)
    539
  • 6
    通过array.every()实现数据验证、权限检查和一致性检查;js数组元素检查的方法,every()的使用详解,array.some与array.every的区别(附实际应用代码)
    353
  • 7
    多维数组操作,不要再用遍历循环foreach了!来试试数组展平的小妙招!array.flat()用法与array.flatMap() 用法及二者差异详解
    236
  • 8
    别再用双层遍历循环来做新旧数组对比,寻找新增元素了!使用array.includes和Set来提升代码可读性
    237
  • 9
    Array.forEach实战详解:简化循环与增强代码可读性;Array.forEach怎么用;面对大量数据时怎么提高Array.forEach的性能
    151
  • 10
    深入理解 JavaScript 中的 Array.find() 方法:原理、性能优势与实用案例详解
    635