名表是指这样一种表,表中的每个元素由一个名字(称为关键词)加上与之一些信息构成。名表可以用一个一维数组来表示,每个元素由一个结构来表示,该结构员包含一个关键词和其他一些与该关键词相关的信息。下面是一个名表的定义: const int NAME LEN=20;const int TABLE LEN=100;struct TableItem{ char name[NAME_LEN]; /1 名表的元素类型// 关键词 ......//其他信息 };TableItem name_table[TABLE_LEN];//名表用STL的容器 mep 和find_if实现名表表示和查找功能.写两个以上文件 代码不要全部写在mian函数里
时间: 2024-03-25 16:42:10 浏览: 86
文件1:nameTable.h
```c++
#pragma once
#include <string>
#include <vector>
#include <algorithm>
const int NAME_LEN = 20;
const int TABLE_LEN = 100;
struct TableItem {
char name[NAME_LEN];
//其他信息
};
class NameTable {
public:
void addItem(std::string name, TableItem item);
TableItem getItem(std::string name);
int getSize();
std::vector<TableItem>::iterator findItem(std::string name);
private:
std::vector<TableItem> table;
};
void NameTable::addItem(std::string name, TableItem item) {
std::copy(name.begin(), name.end(), item.name);
table.push_back(item);
}
TableItem NameTable::getItem(std::string name) {
auto it = findItem(name);
if (it != table.end()) {
return *it;
}
else {
TableItem item;
item.name[0] = '\0';
return item;
}
}
int NameTable::getSize() {
return table.size();
}
std::vector<TableItem>::iterator NameTable::findItem(std::string name) {
return std::find_if(table.begin(), table.end(), [name](TableItem item) {
return name == std::string(item.name);
});
}
```
文件2:main.cpp
```c++
#include "nameTable.h"
#include <iostream>
int main() {
NameTable nt;
TableItem item1 = { "", /*其他信息*/ };
TableItem item2 = { "", /*其他信息*/ };
nt.addItem("name1", item1);
nt.addItem("name2", item2);
std::cout << nt.getSize() << std::endl;
std::cout << nt.getItem("name1").name << std::endl;
std::cout << nt.getItem("name2").name << std::endl;
return 0;
}
```
阅读全文