![]() |
#2
powers00102017-05-20 15:50
|

#pragma once
#include<cstring>
#include<iostream>
using std::cout;
using std::endl;
class person
{
public:
person(const char * first, const char * second);
person(const person & p1);
person & operator =(const person & p1);
bool operator <(const person & p1) const;
void show() const;
void initname(const char * first, const char * second);
~person();
private:
char * firstname;
char * secondname;
};
#include<cstring>
#include<iostream>
using std::cout;
using std::endl;
class person
{
public:
person(const char * first, const char * second);
person(const person & p1);
person & operator =(const person & p1);
bool operator <(const person & p1) const;
void show() const;
void initname(const char * first, const char * second);
~person();
private:
char * firstname;
char * secondname;
};

#include "StdAfx.h"
#include "person.h"
person::person(const char * first, const char * second)
{
initname(first,second);
}
person::person(const person & p1)
{
initname(p1.firstname,p1.secondname);
}
person & person::operator =(const person & p1)
{
delete [] firstname;
delete [] secondname;
initname(p1.firstname,p1.secondname);
return *this;
}
bool person::operator <(const person & p1) const
{
if(strcmp(this->firstname,p1.firstname)<0||((strcmp(this->firstname,p1.firstname)==0)&&(strcmp(this->secondname,p1.secondname)<0)))
return 1;
return 0;
}
void person::show() const
{
cout<<firstname<<" "<<secondname<<endl;
}
void person::initname(const char * first, const char * second)
{
unsigned int len=strlen(first)+1;
this->firstname=new char(len);
strcpy_s(firstname,len,first);
len=strlen(second)+1;
this->secondname=new char(len);
strcpy_s(secondname,len,second);
}
person::~person(void)
{
delete [] firstname;
delete [] secondname;
}
#include "person.h"
person::person(const char * first, const char * second)
{
initname(first,second);
}
person::person(const person & p1)
{
initname(p1.firstname,p1.secondname);
}
person & person::operator =(const person & p1)
{
delete [] firstname;
delete [] secondname;
initname(p1.firstname,p1.secondname);
return *this;
}
bool person::operator <(const person & p1) const
{
if(strcmp(this->firstname,p1.firstname)<0||((strcmp(this->firstname,p1.firstname)==0)&&(strcmp(this->secondname,p1.secondname)<0)))
return 1;
return 0;
}
void person::show() const
{
cout<<firstname<<" "<<secondname<<endl;
}
void person::initname(const char * first, const char * second)
{
unsigned int len=strlen(first)+1;
this->firstname=new char(len);
strcpy_s(firstname,len,first);
len=strlen(second)+1;
this->secondname=new char(len);
strcpy_s(secondname,len,second);
}
person::~person(void)
{
delete [] firstname;
delete [] secondname;
}

// vestor01.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
//#include<iostream>
#include"person.h"
#include<vector>
using std::vector;
using std::cin;
int main()
{
vector<person> people;
const size_t maxlength=50;
char firstname[maxlength];
char secondname[maxlength];
while(1)
{
cout<<"请输入姓(或enter终止):";
cin.getline(firstname,maxlength ,'\n');
if(strlen(firstname)==0)
break;
cout<<"请输入名:";
cin.getline(secondname,maxlength ,'\n');
//people.push_back(person(firstname,secondname));
person p(firstname,secondname);
people.push_back(p);
}
cout<<endl;
auto iter=people.begin();
if(iter!=people.end())
iter++->show();
return 0;
}
//
#include "stdafx.h"
//#include<iostream>
#include"person.h"
#include<vector>
using std::vector;
using std::cin;
int main()
{
vector<person> people;
const size_t maxlength=50;
char firstname[maxlength];
char secondname[maxlength];
while(1)
{
cout<<"请输入姓(或enter终止):";
cin.getline(firstname,maxlength ,'\n');
if(strlen(firstname)==0)
break;
cout<<"请输入名:";
cin.getline(secondname,maxlength ,'\n');
//people.push_back(person(firstname,secondname));
person p(firstname,secondname);
people.push_back(p);
}
cout<<endl;
auto iter=people.begin();
if(iter!=people.end())
iter++->show();
return 0;
}