根据特定数据对字符串进行排序的最佳方法是什么
What is the best way for sorting string according specific data
我从不同的设备通过 tcp 协议 8 行。
线条示例:"12:10:00,GS,继续,休息/n"。
如何将两个结果(每个源 8 行)输入到排序容器(映射或prioriy_queue?它应该根据第一个数据(时间)对它们进行排序吗?
你来了:
#include <iostream>
#include <sstream>
#include <vector>
#include <stdlib.h>
#include <iterator>
#include <algorithm>
#include <set>
class TimeComparator
{
public:
inline static unsigned long int converToSecond(std::string time)
{
std::string delemeter = ":";
std::vector<std::string> dataVec;
size_t pos = 0;
while((pos = time.find(delemeter)) != std::string::npos)
{
dataVec.push_back(time.substr(0, pos));
time.erase(0, pos + delemeter.length());
}
int hour = atoi(dataVec[0].c_str());
int min = atoi(dataVec[1].c_str());
unsigned long int seconds = hour*60*60 + min*60;
return seconds;
}
inline static bool compareTimeInHHMMFormat(std::string lhsTime, std::string rhsTime)
{
unsigned long int lhsSec = converToSecond(lhsTime);
unsigned long int rhsSec = converToSecond(rhsTime);
if(lhsSec <= rhsSec)
return true;
else
return false;
}
};
class Comparator
{
public:
bool operator() (const std::string lhs, const std::string rhs) const
{
std::vector<std::string> vec;
std::vector<std::string> timeVec;
vec.push_back(lhs);
vec.push_back(rhs);
auto it = vec.begin();
for(it; it != vec.end(); it++)
{
std::istringstream ss(*it);
std::string token;
std::getline(ss, token, ',');
timeVec.push_back(token);
}
return TimeComparator::compareTimeInHHMMFormat(timeVec[0], timeVec[1]);
}
};
int main()
{
std::string input1 = "12:10:00, gs, continue, break/n";
std::string input2 = "10:10:00, gs, continue, break/n";
std::set<std::string, Comparator> timeSet;
timeSet.insert(input1);
timeSet.insert(input2);
std::copy(timeSet.begin(),timeSet.end(), std::ostream_iterator<std::string>(std::cout, "n"));
}
Output:
techie@gateway2:myExperiments$ ./a.out
10:10:00, gs, continue, break/n
12:10:00, gs, continue, break/n
相关文章:
- 在C#中处理C++指针而不使用unsafe的最佳方法
- 在 c++ 中对类中的 c 字符串动态数组进行排序的最佳方法是什么?
- C++ 最佳键值容器,可按值排序,并可快速删除
- 根据特定数据对字符串进行排序的最佳方法是什么
- 这是用于对二维数组进行排序的最佳方法
- 最佳排序的c++容器
- 用sqlite和c++对数据库表进行排序的最佳方法是什么
- 按降序排序的最佳方式
- 快速排序最佳情况比平均情况更糟糕
- 以最佳方式排序
- C# 与 C/C++:我是否需要手动对结构字段进行排序以获得最佳性能
- 用于排序/操作/排序的最佳替代算法
- 排序列表的最佳数据结构(性能)
- 在N个未排序的数字中搜索给定值的最佳方法
- 降序排序的最佳方式是什么
- 排序后查找元素在未排序数组中的位置的最佳方法
- 通过索引向量对犰狳矩阵的所有列进行排序的最佳方法
- 从文本文件中读取字典并将其存储在排序容器中的最佳方法是什么?
- 如何在不知道宽度或高度的情况下对矩形的角进行最佳排序
- 检查矢量是否排序的最佳算法