读书人

一个联想数组的有关问题

发布时间: 2012-03-09 21:42:52 作者: rapoo

一个联想数组的问题
---------------------------------------assoc.hpp
class Assc_array{
struct Item{
char *name;
long tel_num;
};
Item *table;
int max;
int items;
public:
Assc_array(){}
Assc_array(int);
long &oprator[](char *);
void printAll();
};
-----------------------------------------assoc.cpp
#include<iostream>
using namespace std;
#include"assoc.hpp"
Assc_array::Assc_array(int nm=0)
{
max=nm;
items=0;
table=new Item[max];
}
long & Assc_array::operator[](char *nm)
{

Item *pi;
for(pi=table;pi<table+items;pi++)
if(strcmp(pi->name,nm)==0)
return pi->tel_num;
pi=table+items++;
pi->name=new char[strlen(nm)+1];
strcpy(pi->name,nm);
pi->tel_num=0;
return pi->tel_num;
}
void main()
{
for(int i=0;i<items;i++)
cout<<table[i].name<<':'<<table[i].tel_num<<'\n';
}
--------------------------------lianxiang.cpp
#include<iostream>
using namespace std;
#include"assoc.cpp"
void main()
{
Assc_arrau tel_num_table(5);
tel_num_table["Zhang"]=7075461
tel_num_table["Li"]=4047658
tel_num_table["Tan"]=2595121
tel_num_table["Cai"]=7732435
cout<<"Zhang:"<<tel_num_table["Zhang"]<<'\n';
cout<<"Tan:"<<tel_num_table["Tan"]<<'\n';
cout<<"Cai:"<<tel_num_table["Cai"]<<'\n';
tel_num_table.printAll();

}
有很大问题


[解决办法]
你写代码可得加强,毛病不少

把下面代码放到一个cpp中编译能通过

C/C++ code
class Assc_array{     struct Item{         char *name;         long tel_num;     };     Item *table;     int max;     int items;     public:         Assc_array(){}         Assc_array(int);         long &operator[](char *);         void printAll(); }; #include <iostream > using namespace std; //#include"assoc.hpp" Assc_array::Assc_array(int nm=0) {     max=nm;     items=0;     table=new Item[max]; } long & Assc_array::operator[](char *nm) {         Item *pi;     for(pi=table;pi <table+items;pi++)         if(strcmp(pi->name,nm)==0)             return pi->tel_num;         pi=table+items++;         pi->name=new char[strlen(nm)+1];         strcpy(pi->name,nm);         pi->tel_num=0;         return pi->tel_num; } void Assc_array::printAll(){    for(int i=0;i <items;i++)         cout <<table[i].name << ': ' <<table[i].tel_num << '\n ';     }#include <iostream > using namespace std; //#include"assoc.cpp" void main() {     Assc_array tel_num_table(5);     tel_num_table["Zhang"]=7075461 ;    tel_num_table["Li"]=4047658 ;    tel_num_table["Tan"]=2595121 ;    tel_num_table["Cai"]=7732435 ;    cout <<"Zhang:" <<tel_num_table["Zhang"] << '\n ';     cout <<"Tan:" <<tel_num_table["Tan"] << '\n ';     cout <<"Cai:" <<tel_num_table["Cai"] << '\n ';     tel_num_table.printAll();     } 

读书人网 >C++

热点推荐