在功能中打印矢量

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在功能中打印矢量相关的知识,希望对你有一定的参考价值。

我需要打印我在listInput中填充的向量。当我去listPrint时,程序崩溃了。我该怎么办才能解决这个问题?这是我的主要内容:

#include <iostream>
#include <string>
#include <vector>

#include "func.h"
using namespace std;

int main(int argc, char** argv) {
    subjects a;
    int r=1;
    while(r!=0){
        int select=a.userChoice();
        switch(select){
            case 1:
            a.listPrint();
            break;

            case 2:
            listInput(a);
            break;
        }
    }
    return 0;
}

我的标题:

#ifndef SUBJECT
#define SUBJECT

#include <string>
#include <vector>

class subjects{
    private:
        std::string subjectName;
        std::string lectName;
        std::string lectSurname;
        int credits;
        int studentnum;

    public:
    /*  subjects(){
            subjectName="";
            lectName="";
            lectSurname="";
            credits=0;
            studentnum=0;
        }*/
        int userChoice();
        int enterNumber(std::string name);
        void menu();
        std::string getSubjectName(){
            return subjectName;
        }
        std::string getLectName(){
            return lectName;
        }
        std::string getLectSurname(){
            return lectSurname;
        }
        int getCredits(){
            return credits;
        }
        int getStudentNum(){
            return studentnum;
        }
        friend void listInput(subjects a);
        void listPrint();
        bool checkName(std::string &text);
        std::vector<subjects*> entry;
        subjects(const std::string subjectName="", const std::string lectName = "", const std::string lectSurname="", const int credits = 0, const int studentnum = 0) : 
            subjectName(subjectName),
            lectName(lectName),   
            lectSurname(lectSurname),   
            credits(credits),   
            studentnum(studentnum){
}

};

#endif

和我的功能文件:

    void listInput(subjects a){
        .
        .
        .
        a.entry.push_back(new subjects(a.subjectName, a.lectName,a.lectSurname,a.credits, a.studentnum));
        }

    void subjects::listPrint(){
        for(int i=0; i<entry.size(); i++){
            cout<<entry[i]->getSubjectName()<<" "<<entry[i]->getLectName()<<" "<<entry[i]->getLectSurname()<<" "<<entry[i]->getCredits()<<" "<<entry[i]->getStudentNum()<<endl;
        }

    }

我知道建议不要使用朋友功能,但我需要使用至少其中一个。此外,如果我在listInput中打印矢量,那么它只打印第一个条目。如果向量中有多个条目,它也会崩溃。

答案

您将一个实例按值传递给列表函数,然后尝试打印它。如果计划在list函数的范围之外使用它,则应考虑通过引用传递它。

以上是关于在功能中打印矢量的主要内容,如果未能解决你的问题,请参考以下文章

打印矢量元素

更新的矢量元素不打印

我的Android进阶之旅NDK开发之在C++代码中使用Android Log打印日志,打印出C++的函数耗时以及代码片段耗时详情

python python中的漂亮(或漂亮打印)JSON对象具有这一功能。在尝试了解什么时,我总是使用这个片段

如何将打印在控制台上的值存储为矢量?

一般打印光栅和/或矢量图像