gpt4 book ai didi

C++ 使用 std::sort 进行多维字符串数组

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

我有一个字符串数组 string relationarray[10000][2];

取自#include<string> .数组的 relationarray[index][0] 处的每个字符串在其开头都有一个 4 位数字,我试图用它来对数组进行排序。数组通常未满。

来自 #include<algorithm>我正在尝试使用

std::sort(relationarray,relationarray + (sizeof(relationarray)/sizeof(relationarray[0]))让一切都井井有条。但是 sort 将字符串放在数组的末尾以支持空位置。我究竟做错了什么?我尝试为排序的第三个参数创建比较函数,但它没有编译。

bool waytosort(string one, string two){
if (two.empty()){
return false;
}
int first =stoi(one.substr(0,3));
int second=stoi(two.substr(0,3));
return first<second;

最佳答案

uncletall 有正确的想法——将字符串放入一个结构体——但没有必要放弃 <algorithm>对于讨厌的遗留 C 代码。

#include <algorithm>
#include <stddef.h>

struct MyData {
string code;
string name;

bool operator <(const MyData& rhs) const
{ return (rhs.code == "") || ((code != "") && (code < rhs.code)); }
};

static const size_t kNumElements = 100000;
MyData* data[kNumElements];

sort(data, data + kNumElements);

这里唯一的魔法是定义一个 operator<对于按第一个字符串排序的新结构,并将空字符串排序到末尾而不是开始。既然你说数组并不总是满的(恕我直言,你真的应该在这里使用 std::vector),如果你跟踪数组中有多少元素并用它来生成结束迭代器会更好。

关于C++ 使用 std::sort 进行多维字符串数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28666158/

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