vector,對string排序

本文介绍了一种使用C++实现的字符串排序方法,通过定义比较函数并应用到vector容器中的string类型元素上,实现了自定义排序逻辑。具体展示了如何读取输入、存储数据,并通过sort函数进行排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

這是vector中對string類型排序。

用寫比較函數的方法

 

#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
//比較函數,升序排序
bool cmp(const string &x,const string &y)  //&符號不能少
{
  return x>y;
}
int main()
{
freopen("in.txt","r",stdin);
vector<string>vec;
  string s;
  vec.clear();
 int n;
  cin>>n;
  for(int i=0;i<n;i++)
  {
    cin>>s;
    vec.push_back(s);
  }
  sort(vec.begin(),vec.end(),cmp);
 // sort(vec.begin(),vec.end());  若省略第三個參數,默認升序排序
  for(int i=0;i<vec.size();i++)
  {
    cout<<vec[i]<<endl;
  }
  return 0;
}

### C++ Vector 容器排序方法 在C++中,`std::vector` 是标准模板库(STL)的一部分,提供了多种方式来进行排序操作。为了对 `vector` 进行排序,通常会使用 `<algorithm>` 头文件中的算法函数。 #### 使用 `std::sort` 对于基本类型的 `vector`,可以直接调用 `std::sort()` 函数进行升序排列: ```cpp #include <iostream> #include <vector> #include <algorithm> int main() { std::vector<int> numbers = {5, 2, 9, 1, 5, 6}; // 对整数向量进行排序 std::sort(numbers.begin(), numbers.end()); for (auto num : numbers) { std::cout << num << " "; } } ``` 当需要降序或其他特定规则时,则需提供比较谓词给 `std::sort()` 或者其他排序函数: ```cpp // 自定义比较函数用于降序排序 bool compare(int a, int b){ return a > b; } ... // 调用带自定义比较器的 sort 方法 std::sort(numbers.begin(), numbers.end(), compare); ``` #### 使用 `std::stable_sort` 如果希望保持相同键值元素之间的原始顺序关系,应该选择更稳定的版本——`std::stable_sort()` : ```cpp struct Person { std::string name; int age; bool operator<(const Person& other)const{ return this->age < other.age; } }; void printPeople(const std::vector<Person>& people){ for(auto p : people){ std::cout<<p.name<<" is "<<p.age<<"\n"; } } int main(){ std::vector<Person> persons={ {"Alice",30},{"Bob",24},{"Charlie",28}, {"David",24},{"Eve",30} // 注意这里有两个年龄相同的记录 }; // 稳定排序不会改变同龄人的先后次序 std::stable_sort(persons.begin(),persons.end()); printPeople(persons); return 0; } ``` #### 部分排序 `std::partial_sort` 有时只需要获取前 N 小/大项而不需要完全有序的结果,这时可以考虑采用效率更高的 `std::partial_sort()` 来完成任务: ```cpp #include <iostream> #include <vector> #include <algorithm> int main(){ std::vector<int> data={7, 4, 5, 1, 8, 3, 2, 6}; size_t n=3; // 获取最小的三个数字 // 只对前面N个位置做全排序 std::partial_sort(data.begin(),data.begin()+n,data.end()); // 输出前三名 for(size_t i=0;i<n;++i){ std::cout<<data[i]<<" "; } return 0; } ``` 以上展示了如何利用不同的 STL 排序工具处理 `vector` 中的数据[^5]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值