- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我正在处理一个问题,我的代码中有两个 vector 对象:一个是 vector<string>
, 另一个 vector<unsigned>
我将作为 const ref 传递给某个函数。我正在使用这些函数从一个 vector 中找出最小值或最大值,但我需要最小值或最大值的索引值,以便我可以索引到另一个 vector 。我的代码看起来像这样:
std::string getTopEmployee( const std::vector<std::string>& names, const std::vector<unsigned>& ratings ) {
// Find Largest Value in ratings
std::size_t largest = *std::max_element( ratings.begin(), ratings.end() );
// How to get the index?
// I do not need the largest value itself.
return names[index];
}
std::string getWorstEmployee( const std::vector<std::string>& names, const std::vector<unsigned>& ratings ) {
// Find Smallest Value in ratings
std::size_t smallest = *std::min_element( ratings.begin(), ratings.end() );
// How to get the index?
// I do not need the smallest value itself.
return names[index];
}
传入此函数的两个 vector 大小相同:我们假设 ratings
中没有两个值值相等的 vector 。对第二个 vector 进行排序不是一种选择。
最佳答案
std::min_element()
和 std::max_element()
使用迭代器,而不是索引。
对于像 std::vector
这样的可索引容器,您可以使用 std::distance()
将迭代器转换为索引。 ,例如:
std::string getTopEmployee( const std::vector<std::string>& names, const std::vector<unsigned>& ratings ) {
// Find Largest Value in ratings
auto largest = std::max_element( ratings.begin(), ratings.end() );
if (largest == ratings.end()) return "";
return names[std::distance(ratings.begin(), largest)];
}
std::string getWorstEmployee( const std::vector<std::string>& names, const std::vector<unsigned>& ratings ) {
// Find Smallest Value in ratings
auto smallest = std::min_element( ratings.begin(), ratings.end() );
if (smallest == ratings.end()) return "";
return names[std::distance(ratings.begin(), smallest)];
}
关于C++ 在使用 min_element 或 max_element 时检索 vector 中的索引值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47766388/
我有以下内容 static const unsigned int chromosome = 6; double bestFitness[chromosomes]; for(int i = 0; i
int N = 6; vector > A(N, vector(3)); /* Do operation with A */ cout<<(*max_element(a.begin(),a.end()
假设我有一个 std::vector : std::vector v; [v is initialized] 我想得到 v 的最大元素。有一个算法可以做到这一点: int max_value = *s
我注意到 std::max_element 在整数上有一个奇怪的行为,它们相差不超过一个: #include #include #include int main() { std::ve
我有一个二维矩阵 double TotalEnergy[200][47]; 此矩阵填充有适当的值。现在我试图在每一列中找到最大值。 在这种情况下如何使用 std::max_element? 非常感谢。
STL 提供 std::max_element 来查找可迭代对象中的最大元素,例如像这样: std::vector::const_iterator max = std::max_element(o
我一直在看推力,我偶然发现了一个几乎(但不完全)回答我的问题:Finding the maximum element value AND its position using CUDA Thrust
我需要找到存储在我设备上的长数组中的最大元素。我想我可以使用 thrust::max_element 来做到这一点。我在下面代码的 while 循环中调用 thrust::max_element。我只
int array[] = {2, 3, 4, 6}; int array[6] = {2, 3, 4, 6}; int array[MAX_SIZE] = {2, 3, 4, 6}; 在第一个语句中
#include #include int main() { int a[3]={5,3,4}; std::cout并写 #include //... std::cout << *s
关闭。这个问题需要debugging details .它目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and th
我给这个代码片段输入 1 2 3 4 5 并不断得到 O 作为输出。我想要 5(最大元素)作为所需的输出。 int main() { int inp; std::vector A; for (int
所以根据这里的链接:http://www.cplusplus.com/reference/algorithm/max_element/ ,max_element 函数是 O(n),显然对于所有 STL
同样是O(n)复杂度,但是经过不严谨 测试,使用库函数的速度远超for循环的遍历找最值 ?
我正在了解 std::max_element .我写了下面的代码: auto e = std::max_element( std::begin(rtspUrls
有没有办法通过比较每 N 个元素来找到容器中的最大元素并返回索引。使用 STL、BOOST 或...其他库? 对于每个 N,我的意思是使用 std::max_element,但将 for 的增量从++
我有一个指向对象 QActionDonald 的指针 vector ,我试图找到包含最高 expectedvalue_ 的对象。我已经重载了 operator *actionList = qValu
我怎样才能得到堆栈的最大元素? STL 堆栈没有任何 begin() 或 end() 方法,我可以通过以下方法获得最大值: auto max = max_element(c.begin(), c.en
我正在尝试为 map 编写一个自定义 cmp 函数,这是一个对 map 的第二个元素进行比较的简单函数。我想将该函数用作模板,但我不知道如何将 map 的 .first 和 .second 类型传递给
如果没有元素大于某个值,有什么方法可以使 std::max_element 返回 end 迭代器? 假设我有这个 vector : std::vector vector{3, 6, 2, 5}; au
我是一名优秀的程序员,十分优秀!