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();

  

输出:

 

posted @   ®Geovin Du Dream Park™  阅读(25)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 25岁的心里话
· 闲置电脑爆改个人服务器(超详细) #公网映射 #Vmware虚拟网络编辑器
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· 零经验选手,Compose 一天开发一款小游戏!
· 一起来玩mcp_server_sqlite,让AI帮你做增删改查!!
历史上的今天:
2010-04-13 SQL Server 2005 Hierarchies WITH Common Table Expressions
< 2025年3月 >
23 24 25 26 27 28 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 1 2 3 4 5
点击右上角即可分享
微信分享提示