gpt4 book ai didi

c++ - 按顺序组织输出数据

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

我想组织以下代码的输出。请告知我该如何进行。

StringStream ss;

for (i = 0; i < vecDB.size(); i++) {
for (j = 0; j < vecUser.size(); j++) {
if (vecDB[i].AccessLevel == vecUser[j].Accesslevel) {
ss << vecUser[j].Accesslevel << endl;
} else if (vecDB[i].AccessLevel < vecUser[j].Accesslevel) {
ss << vecUser[j].Accesslevel << endl;
} else if (vecUser[j].Accesslevel < vecDBi].AccessLevel) {
ss << vecUser[j].Accesslevel << endl;
}
}
}

cout << ss.str();

当前输出

Level0
Level3
Level2
Level4
Level0
Level0
Level1
Level4
Level2
Level3

期望的输出

Level0
Level0
Level0
Level1
Level2
Level2
Level3
Level3
Level4
Level4

最佳答案

首先,你的逻辑是乱七八糟的:

  • 如果 vecUser[j] == vecDBi[i] 则输出 vecUser[j].Accesslevel
  • 如果 vecUser[j] <vecDBi[i] 则输出 vecUser[j].Accesslevel
  • 如果 vecUser[j] > vecDBi[i] 则输出 vecUser[j].Accesslevel
  • 如果以上都不是,则输出 vecUser[j].Accesslevel

无论你总是输出什么vecUser[j].Accesslevel

换句话说,你可以替换这个:

if (vecDB[i].AccessLevel == vecUser[j].Accesslevel) {
ss << vecUser[j].Accesslevel << endl;
} else if (vecDB[i].AccessLevel < vecUser[j].Accesslevel) {
ss << vecUser[j].Accesslevel << endl;
} else if (vecUser[j].Accesslevel < vecDBi].AccessLevel) {
ss << vecUser[j].Accesslevel << endl;
}

用下面的,仍然得到相同的结果。

ss << vecUser[j].Accesslevel << endl;

我不知道你想用这个逻辑实现什么,但现在它坏了。


如果您只是希望按顺序输出字符串,那为什么不对它们进行排序呢?

std::vector<std::string> sorted{std::begin(vecUser), std::end(vecUser)};
std::sort(std::begin(sorted), std::end(sorted));

for (const auto& s : sorted) {
std::cout << s << std::endl;
}

关于c++ - 按顺序组织输出数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18209003/

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