首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

一个联想数组的有关问题

2012-03-09 
一个联想数组的问题---------------------------------------assoc.hppclass Assc_array{struct Item{char

一个联想数组的问题
---------------------------------------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();     } 

热点排行