gpt4 book ai didi

c++ - 根据特定数据对字符串进行排序的最佳方法是什么

转载 作者:行者123 更新时间:2023-11-28 05:38:25 27 4
gpt4 key购买 nike

我从不同的设备通过 tcp 协议(protocol) 8 行。

行的例子:“12:10:00,gs,继续,休息/n”。

如何将两个结果(每个源的 8 行)输入到排序容器(map 或 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++ - 根据特定数据对字符串进行排序的最佳方法是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37721593/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com