sortc++那个库
时间: 2023-10-10 15:09:28 浏览: 39
sort函数是C++标准库中的一个函数,用于对给定区间的元素进行排序。默认情况下,sort函数按照升序进行排序,但也可以通过传入less<数据类型>()或greater<数据类型>()作为第三个参数来进行降序排序。sort函数的时间复杂度为n*log2n,比冒泡等排序算法效率更高。
代码示例:
#include <bits/stdc++.h>
using namespace std;
int main() {
int a[] = {5, 2, 8, 1, 3};
int n = sizeof(a) / sizeof(a);
sort(a, a + n); // 升序排序
cout << "升序排序结果:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
sort(a, a + n, greater<int>()); // 降序排序
cout << "降序排序结果:";
for (int i = 0; i < n; i++) {
cout << a[i] << " ";
}
cout << endl;
return 0;
}
这段代码中,我们使用了sort函数对数组a进行排序,首先用默认的less<int>()进行升序排序,然后使用greater<int>()进行降序排序。
相关问题
stlc++图书管理系统
STL(C++标准模板库)可以用来实现图书管理系统,其中可以使用vector来存储图书的信息,使用map来实现关键字搜索,使用algorithm来实现排序等功能。
以下是一个简单的图书管理系统的示例代码:
```c++
#include <iostream>
#include <string>
#include <vector>
#include <map>
#include <algorithm>
using namespace std;
struct Book {
string name;
string author;
int num;
};
// 用vector存储图书信息
vector<Book> books;
// 用map存储关键字
map<string, vector<int>> index;
// 添加图书
void addBook(string name, string author, int num) {
Book book;
book.name = name;
book.author = author;
book.num = num;
books.push_back(book);
// 更新关键字索引
int index = books.size() - 1;
string keyword = name + author;
for (int i = 0; i < keyword.length(); i++) {
string sub = keyword.substr(i, 1);
if (index.find(sub) == index.end()) {
index[sub] = vector<int>();
}
index[sub].push_back(index);
}
}
// 根据名称和作者搜索图书
void searchBook(string name, string author) {
string keyword = name + author;
vector<int> result;
for (int i = 0; i < keyword.length(); i++) {
string sub = keyword.substr(i, 1);
if (index.find(sub) != index.end()) {
for (int j = 0; j < index[sub].size(); j++) {
int idx = index[sub][j];
if (books[idx].name == name && books[idx].author == author) {
result.push_back(idx);
}
}
}
}
if (result.empty()) {
cout << "没有找到相关图书" << endl;
} else {
cout << "找到了" << result.size() << "本相关图书" << endl;
for (int i = 0; i < result.size(); i++) {
cout << "名称:" << books[result[i]].name << endl;
cout << "作者:" << books[result[i]].author << endl;
cout << "数量:" << books[result[i]].num << endl;
cout << endl;
}
}
}
// 根据名称排序图书
bool cmpByName(Book a, Book b) {
return a.name < b.name;
}
// 根据作者排序图书
bool cmpByAuthor(Book a, Book b) {
return a.author < b.author;
}
// 显示所有图书
void showBooks() {
cout << "共有" << books.size() << "本图书" << endl;
for (int i = 0; i < books.size(); i++) {
cout << "名称:" << books[i].name << endl;
cout << "作者:" << books[i].author << endl;
cout << "数量:" << books[i].num << endl;
cout << endl;
}
}
int main() {
// 添加几本图书
addBook("C++程序设计", "谭浩强", 10);
addBook("C++高级编程", "侯捷", 5);
addBook("Java核心技术", "Cay S. Horstmann, Gary Cornell", 3);
// 按名称排序
sort(books.begin(), books.end(), cmpByName);
// 显示所有图书
showBooks();
// 根据名称和作者搜索图书
searchBook("C++程序设计", "谭浩强");
return 0;
}
```
该示例代码可以实现添加图书、按名称排序、按作者排序、搜索图书等功能。其中用vector存储图书信息,用map存储关键字索引。
当添加图书时,会将图书信息存储到vector中,并且会更新关键字索引。当搜索图书时,会根据名称和作者的关键字搜索图书,并且会输出搜索结果。当按名称排序或按作者排序时,使用algorithm库中的sort函数来实现排序功能。当显示所有图书时,会遍历vector中的所有图书信息,并且会输出每本图书的名称、作者和数量。
yolov5+deepsort行人跟踪环境配置
以下是 yolov5+deepsort 行人跟踪环境配置的步骤:
1. 安装 Anaconda,可以从官网下载安装包进行安装。
2. 创建一个 Anaconda 环境,可以使用以下命令:
```
conda create --name <env_name> python=3.7
```
其中,`<env_name>` 是你要创建的环境名称。
3. 激活 Anaconda 环境,使用以下命令:
```
conda activate <env_name>
```
4. 安装 PyTorch,可以根据自己的 CUDA 版本和 PyTorch 版本选择相应的安装方式。下面是一个例子:
```
conda install pytorch torchvision torchaudio cudatoolkit=<cuda_version> -c pytorch
```
其中,`<cuda_version>` 是你的 CUDA 版本。
5. 安装其它依赖库,可以使用以下命令:
```
pip install opencv-python pillow numpy scipy matplotlib tqdm
```
6. 克隆 yolov5 代码库,可以使用以下命令:
```
git clone https://github.com/ultralytics/yolov5.git
```
7. 下载 yolov5 模型文件,可以去 yolov5 代码库的 release 页面下载,也可以使用以下命令:
```
python models/download.py --weights yolov5s.pt
```
8. 克隆 deepsort 代码库,可以使用以下命令:
```
git clone https://github.com/nwojke/deep_sort.git
```
9. 下载 deepsort 模型文件,可以去 deepsort 代码库的 release 页面下载,也可以使用以下命令:
```
wget https://github.com/nwojke/deep_sort/releases/download/20200604/deep_sort_model.tar.gz
tar -xzvf deep_sort_model.tar.gz
```
10. 运行行人跟踪程序,可以使用以下命令:
```
python demo.py --source <video_path> --weights yolov5s.pt --cfg deep_sort.yaml --img-size 640
```
其中,`<video_path>` 是要处理的视频文件路径。