实验6 vector和set
时间: 2024-05-19 18:17:38 浏览: 7
可以在哪些情况下使用,它们的特点和区别是什么?
Vector和set都是C++里的容器,可以存储一组相同数据类型的元素。其中,vector是动态数组,可以随时调整长度,而set是一种关联式容器,元素按照一定规则自动排好序。同时,set中的元素是唯一的,不允许重复。
Vector适用于需要频繁读取并随机存取元素的场合,因为它的元素在内存中是连续存放的,支持通过下标访问元素。而set适用于元素需要排序且唯一的场合,通常用于实现集合的操作。
在使用上,vector可以通过push_back和pop_back在尾部增加或删除元素,也可以通过insert和erase在任意位置插入或删除元素。set则只能通过insert和erase实现插入和删除操作。
总之,vector和set在使用场景和特点上有所不同,具体使用需要根据实际需求进行选择。
相关问题
实验七 STL 的应用
STL(Standard Template Library)是C++标准库的一部分,它提供了许多现成的数据结构和算法,可以大大简化我们的编程工作。STL包含了很多常用的数据结构,如vector、list、map、set等,还包括算法、迭代器、函数对象等等。
在实际应用中,STL可以帮助我们快速地实现各种功能,以下是几个STL的应用场景:
1. 使用vector容器进行动态数组的操作
vector是STL中的一个容器,它可以动态地调整大小,支持快速的随机访问和在尾部插入/删除元素。我们可以使用vector来实现动态数组,从而方便地进行数组的操作。
例如,我们可以使用vector来存储一组整数,然后进行排序、查找、插入、删除等操作:
```C++
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main()
{
vector<int> nums = {5, 2, 3, 1, 4};
sort(nums.begin(), nums.end()); // 排序
int pos = lower_bound(nums.begin(), nums.end(), 3) - nums.begin(); // 查找
nums.insert(nums.begin() + pos, 6); // 插入
nums.erase(nums.begin() + 2); // 删除
for (int num : nums)
cout << num << " ";
cout << endl;
return 0;
}
```
输出结果为:1 2 4 5 6
2. 使用map容器进行键值对的操作
map是STL中的一个关联容器,它提供了一种映射关系,可以将一个键和一个值关联起来,从而方便地进行键值对的操作。我们可以使用map来实现字典、计数器、索引等功能。
例如,我们可以使用map来统计一段文本中每个单词出现的次数:
```C++
#include <iostream>
#include <map>
#include <string>
#include <algorithm>
using namespace std;
int main()
{
string text = "the quick brown fox jumps over the lazy dog";
map<string, int> word_count;
string word;
for (char ch : text)
{
if (isalpha(ch)) // 如果是字母
word += tolower(ch); // 转换为小写字母
else if (!word.empty()) // 如果是分隔符
{
word_count[word]++; // 统计单词出现次数
word.clear(); // 清空当前单词
}
}
if (!word.empty()) // 处理最后一个单词
word_count[word]++;
for (auto p : word_count)
cout << p.first << ": " << p.second << endl;
return 0;
}
```
输出结果为:
brown: 1
dog: 1
fox: 1
jumps: 1
lazy: 1
over: 1
quick: 1
the: 2
3. 使用algorithm库进行常用算法的操作
algorithm库是STL中的一个库,它提供了许多常用的算法,如排序、查找、计数、求和等等。我们可以使用algorithm库来快速地实现各种功能。
例如,我们可以使用algorithm库来查找一组数字中的最大值和最小值:
```C++
#include <iostream>
#include <algorithm>
using namespace std;
int main()
{
int nums[] = {5, 2, 3, 1, 4};
int n = sizeof(nums) / sizeof(nums[0]);
int max_num = *max_element(nums, nums + n); // 查找最大值
int min_num = *min_element(nums, nums + n); // 查找最小值
cout << "max: " << max_num << endl;
cout << "min: " << min_num << endl;
return 0;
}
```
输出结果为:
max: 5
min: 1
总之,STL是C++编程中非常重要的一部分,它可以大大简化我们的编程工作,提高我们的开发效率。在实际应用中,我们应该熟练掌握STL的各种容器和算法,以便更好地完成我们的工作。
实验室设备管理系统c++
设备管理系统是一个很好的软件开发项目,可以帮助实验室管理人员更好地管理设备和维护设备。下面是一个简单的设备管理系统的C++实现:
1. 设备类(Device)
设备类包含设备名称、设备类型、设备编号、设备状态等属性,以及设备的借出、归还、报废等操作。
```c++
class Device {
private:
string name;
string type;
string id;
string status; // 1表示可用,0表示不可用
public:
Device(string name, string type, string id, string status);
string getName();
string getType();
string getId();
string getStatus();
void setStatus(string status);
void borrowDevice();
void returnDevice();
void discardDevice();
};
```
2. 设备管理类(DeviceManager)
设备管理类包含设备列表、设备数量等属性,以及设备的添加、删除、查询、借出、归还、报废等操作。
```c++
class DeviceManager {
private:
vector<Device> devices;
int numDevices;
public:
DeviceManager();
void addDevice(Device device);
void removeDevice(string id);
void searchDevice(string name);
void borrowDevice(string id);
void returnDevice(string id);
void discardDevice(string id);
};
```
3. 主函数
主函数通过菜单的方式提供用户操作选项,实现设备管理系统的交互界面。
```c++
int main() {
DeviceManager dm;
int choice;
while (true) {
cout << "1. Add device" << endl;
cout << "2. Remove device" << endl;
cout << "3. Search device" << endl;
cout << "4. Borrow device" << endl;
cout << "5. Return device" << endl;
cout << "6. Discard device" << endl;
cout << "7. Quit" << endl;
cout << "Enter your choice: ";
cin >> choice;
switch (choice) {
case 1:
// 添加设备
string name, type, id, status;
cout << "Enter device name: ";
cin >> name;
cout << "Enter device type: ";
cin >> type;
cout << "Enter device ID: ";
cin >> id;
cout << "Enter device status (1 for available, 0 for not available): ";
cin >> status;
Device device(name, type, id, status);
dm.addDevice(device);
break;
case 2:
// 删除设备
string idToRemove;
cout << "Enter device ID to remove: ";
cin >> idToRemove;
dm.removeDevice(idToRemove);
break;
case 3:
// 查询设备
string nameToSearch;
cout << "Enter device name to search: ";
cin >> nameToSearch;
dm.searchDevice(nameToSearch);
break;
case 4:
// 借出设备
string idToBorrow;
cout << "Enter device ID to borrow: ";
cin >> idToBorrow;
dm.borrowDevice(idToBorrow);
break;
case 5:
// 归还设备
string idToReturn;
cout << "Enter device ID to return: ";
cin >> idToReturn;
dm.returnDevice(idToReturn);
break;
case 6:
// 报废设备
string idToDiscard;
cout << "Enter device ID to discard: ";
cin >> idToDiscard;
dm.discardDevice(idToDiscard);
break;
case 7:
// 退出程序
return 0;
default:
cout << "Invalid choice. Please try again." << endl;
break;
}
}
}
```
以上就是一个简单的设备管理系统的C++实现。当然,这只是一个初步的实现,如果要开发一个更完整、更稳定、更易用的设备管理系统,还需要考虑更多的细节和功能。