cpp: vector
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 | // NarcissisticInfo.h : //练习案例:水仙花数 100 - 1000 NarcissisticNumber //案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身 //例如:1 ^ 3 + 5 ^ 3 + 3 ^ 3 = 153 //请利用do...while语句,求出所有3位数中的水仙花数 // 2023年4月5日 涂聚文 Geovin Du edit. // https://mathworld.wolfram.com/NarcissisticNumber.html // #pragma once #ifndef NARCISSISTICINFO_H #define NARCISSISTICINFO_H #include <iostream> #include<string.h> #include<math.h> using namespace std; /** * @brief * \author geovindu. * \date 20230-4-10 * vs C++ 两种注释方法,可以用如C#的注释方法 */ namespace geovindu { /** * @brief 水仙花数 实体类. */ class NarcissisticInfo { private : string NarcissisticName; int NarcissisticDigit; public : /// <summary> /// /// </summary> /// <param name="name"></param> /// <param name="digit"></param> NarcissisticInfo(string name, int digit) { this ->NarcissisticName = name; this ->NarcissisticDigit = digit; } /// <summary> /// /// </summary> /// <param name="child"></param> NarcissisticInfo( const NarcissisticInfo& child) { this ->NarcissisticName = child.NarcissisticName; this ->NarcissisticDigit = child.NarcissisticDigit; } /* NarcissisticInfo& operator=(const NarcissisticInfo& child) {//第一个&表明返回值是计算结果的引用,第二个&表明使用c的引用,const表明不会改变c this->NarcissisticName = child.NarcissisticName; this->NarcissisticDigit = child.NarcissisticDigit; return *this;//返回对象的引用(如果是前面不是NarcissisticInfo &而是NarcissisticInfo,那么返回的就是对象的拷贝) } */ /** * @brief * . * * \param narcissisticName */ void setNarcissisticName(string narcissisticName) { this ->NarcissisticName = narcissisticName; } /** * . * * \param narcissisticDigit */ void setNarcissisticDigit( int narcissisticDigit) { this ->NarcissisticDigit = narcissisticDigit; } /// <summary> /// /// </summary> /// <returns></returns> string getNarcissisticName() { return NarcissisticName; } /** * @brief. * * \return */ int getNarcissisticDigit() { return NarcissisticDigit; } //void ShowInfo(); }; /** * @brief 水仙花数显示. * */ //void NarcissisticInfo::ShowInfo() //{ //cout << "名称:" << this->getNarcissisticName() << ",水仙花数:" << this->getNarcissisticDigit() << endl; //} } #endif |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 | // NarcissisticList.h : //练习案例:水仙花数 100 - 1000 NarcissisticList //案例描述:水仙花数是指一个 3 位数,它的每个位上的数字的 3次幂之和等于它本身 //例如:1 ^ 3 + 5 ^ 3 + 3 ^ 3 = 153 //请利用do...while语句,求出所有3位数中的水仙花数// 2023年4月5日 涂聚文 Geovin Du edit. //https://bytes.com/topic/c/answers/434432-how-do-you-return-list-best-practices // // #pragma once #ifndef NARCISSISTICLIST_H #define NARCISSISTICLIST_H #include <iostream> #include <string> #include <vector> #include <memory> #include <iostream> #include <string> #include <list> #include "NarcissisticInfo.h" /// <summary> /// /// </summary> namespace geovindu { /** * @brief 水仙花数集合类. * 水仙花数集合类. */ class NarcissisticList { private : list<NarcissisticInfo> NarcissisticInfos; public : /** * @brief. * * \param narcissisticInfos */ void setNarcissisticList(list<NarcissisticInfo> narcissisticInfos) { this ->NarcissisticInfos = narcissisticInfos; } /** * @brief. * * \return */ list<NarcissisticInfo> getNarcissisticInfo() { return NarcissisticInfos; } /** * @brief. * * \param narcissisticInfos */ //NarcissisticList(list<NarcissisticInfo> narcissisticInfos) //{ //this->NarcissisticInfos = narcissisticInfos; //} /** * @brief. * */ void ShowInfo(); }; } #endif |
写一个集合类对象,或是用vector容器处理,就如CSharp一样的返回值。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 | /** * @brief 水仙花数. * * \return 返回实体类集合 */ NarcissisticList NarcissisticNumber::setNarcissisticInfoList() { int i = 100; int min = 100; int max = 1000; //int countA = 0; list<NarcissisticInfo> list; //NarcissisticInfo info; NarcissisticList nlist; do { if (NarcissisticCheck(i)) //IsNarcissisticNumber { //cout << "" << i << "是水仙花数" << endl; //info.setNarcissisticDigit(i); //info.setNarcissisticName("水仙花数"); NarcissisticInfo info( "水仙花数" , i); list.push_back(info); countA++; } i++; } while (i >= min && i < max); nlist.setNarcissisticList(list); cout << "实体类操作,水仙花数有【" << countA << "】个数。" << endl; return nlist; } /// <summary> /// 水仙花数 vector容器 /// list<NarcissisticInfo> csharp 是这样返回值 /// </summary> /// <returns>返回对象数组</returns> vector<NarcissisticInfo> NarcissisticNumber::setNarcissisticInfoVectorList() { int i = 100; int min = 100; int max = 1000; //int countA = 0; vector<NarcissisticInfo> list; //list<NarcissisticInfo> lists; //vector<NarcissisticInfo> info; //NarcissisticList nlist; do { if (NarcissisticCheck(i)) //IsNarcissisticNumber { //cout << "" << i << "是水仙花数" << endl; //info.setNarcissisticDigit(i); //info.setNarcissisticName("水仙花数"); //vector<list<NarcissisticInfo>>; //vector<NarcissisticInfo> info; NarcissisticInfo info( "水仙花数" , i); //lists.push_back(info); list.push_back(info); countA++; } i++; } while (i >= min && i < max); //nlist.setNarcissisticList(list); cout << "vector容器,实体类操作,水仙花数有【" << countA << "】个数。" << endl; return list; } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 | /** * @brief 水仙花数. * * \return */ NarcissisticList Geovin::getInfo() { NarcissisticNumber number; //NarcissisticInfo info = number.GetNarcissisticInfo("水仙花数", 153); //NarcissisticInfo info("水仙花数",153); // //info.setNarcissisticDigit(39); //info.setNarcissisticName(""); NarcissisticList infos = number.setNarcissisticInfoList(); for ( auto info : infos.getNarcissisticInfo()) { cout << "实体类返回:" << info.getNarcissisticName() << "水仙花数" << info.getNarcissisticDigit() << endl; } cout << "共有个数:" << infos.getNarcissisticInfo().size() << "" << endl; return infos; } /** * @brief 水仙花数.实体类 vector * 100至1000内的三位数的水仙花数 */ list<NarcissisticInfo> Geovin::DisplayNarcissicticInfos() { NarcissisticNumber number; list<NarcissisticInfo> infos; vector<NarcissisticInfo> vecotrlist = number.setNarcissisticInfoVectorList(); //infos = number.setNarcissisticList(); //不能赋值,类集合 list if (!vecotrlist.empty()) { for (NarcissisticInfo info : vecotrlist) { cout << "vector操作:" << info.getNarcissisticName() << ",水仙花数:" << info.getNarcissisticDigit() << endl; infos.push_back(info); } } //cout << "水仙花数有【" << number.countA << "】个数。" << endl; return infos; } |
调用:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 | //vector vector容器 list<NarcissisticInfo> dulist = geovin.DisplayNarcissicticInfos(); if (!dulist.empty()) { for ( auto inf : dulist) { cout << "vector:" << inf.getNarcissisticName() << "" << inf.getNarcissisticDigit() << endl; } } //水仙花数 100-1000 实体类 //geovin.getInfo(); geovin.getInfo().ShowInfo(); // //geovin.DisplayNarcissicticInfos(); //水仙花数 100-1000 geovin.DisplayNarcissisticNumber(); |
输出:
哲学管理(学)人生, 文学艺术生活, 自动(计算机学)物理(学)工作, 生物(学)化学逆境, 历史(学)测绘(学)时间, 经济(学)数学金钱(理财), 心理(学)医学情绪, 诗词美容情感, 美学建筑(学)家园, 解构建构(分析)整合学习, 智商情商(IQ、EQ)运筹(学)生存.---Geovin Du(涂聚文)
分类:
Cpp programming
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
2010-04-13 SQL Server 2005 Hierarchies WITH Common Table Expressions