gpt4 book ai didi

c++ - 比较两个静态数组

转载 作者:行者123 更新时间:2023-11-30 04:30:14 24 4
gpt4 key购买 nike

我有一个问题如何实现比较两个静态数组,即。

string bufferNames[]={"apple","orange","banana","pomegranate","pear"};
string bufferPictures[] = {"apple.bmp","orange.bmp","banana.bmp","pomegranate.bmp","pear.bmp"};

当 bufferPictures 中的图片已加载到屏幕上时,bufferNames 中的每一项都表示已经给某人的选择。因此,例如,如果我使用遍历该列表的 rand() 函数获取 orange.bmp,我如何才能获得相同的对应元素 orange 和另外两个随机不正确的元素。任何帮助,将不胜感激。

提前致谢。

附言如果需要进一步解决问题,请直接说出来。

最佳答案

这应该可以做到。该代码利用了 C++11 的特性。你会需要对其进行调整,将其作为作业传递。

#include <string>
#include <iostream>
#include <algorithm>
#include <vector>

struct Picture {
std::string name, file;
bool operator==(const Picture& x) const { return this->name == x.name && this->file == x.file; }
bool operator!=(const Picture& x) const { return !(*this == x); }

};

int main()
{
std::vector< Picture > pics =
{
{"apple", "apple.bmp"},
{"orange", "orange.bmp"},
{"banana", "banana.bmp"},
{"pear", "pear.bmp"},
};

// determined by random choice
const Picture& choice = pics[0];

std::vector< Picture > woChoice;
std::copy_if(pics.begin(), pics.end(), std::back_inserter(woChoice),
[&choice](const Picture& x) {
return x != choice;
});

// random shuffle the remainder and pick the first
// two. alternatively and for more efficience use std::random to
// generate indices
std::random_shuffle(woChoice.begin(), woChoice.end());
std::cout << woChoice[0].name << std::endl;
std::cout << woChoice[1].name << std::endl;

return 0;
}

关于c++ - 比较两个静态数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8844037/

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