【问题标题】:Ordering Vectors, order was not declared in this scope (libraries?)订购向量,订单未在此范围内声明(库?)
【发布时间】:2014-08-25 11:16:31
【问题描述】:

我正在尝试通过另一个具有相同长度的向量(值,int)来订购一个向量(字符串)。现在,这个问题似乎很容易解决,我的问题不是如何解决这个问题,而是我的错误在哪里,以下将给我错误“'order'没有在这个范围内声明”编译器。

如果 x 是一个向量,而 y 是另一个,我会过去,或者类似的东西(如上所述,这不是问题):

x[sort(order(y.begin(), y.end(), greater<int>()))];

或类似的东西。现在显然订单不包括在内。我包含以下库/容器:

#include <iostream>
#include <string>
#include <fstream>
#include <vector>
#include <ctime>
#include <algorithm>
#include <functional>

现在,我是否需要另一个库/容器才能使用“订单”?

【问题讨论】:

  • 你可以制作一个索引为[0, x.size())的辅助向量,通过引用int向量对那个向量进行排序,然后使用排序后的元素访问字符串向量。
  • 或者将所有内容都粘贴到std::map&lt;int, std::string&gt;

标签: c++ vector containers libraries


【解决方案1】:

标准库中没有名为order 的函数。这就是你的错误所在。

该行中的一些其他错误:

std::sort 接受 2 或 3 个参数。第一个和最后一个迭代器和可选比较器与您现在传递给order 的参数完全匹配。您当前正在传递您的 order 返回到 sort 的任何内容,这是错误的。

std::sort 返回void,所以你不能将它的返回值传递给operator[]x

要做你想做的,最简单的解决方案是将值放在std::map&lt;int, std::string&gt; 中。如果确实需要字符串向量,则将值复制到向量中。

【讨论】:

    【解决方案2】:

    不幸的是,您没有提供完整的示例,也不清楚您为什么希望找到函数order。它不是 c++ 语言语法本身的一部分,std 命名空间中也没有 order 函数。您自己也不提供order 函数。所以编译器完全正确地告诉你 "'order' 没有在这个范围内声明".

    此外,假设sort 函数是std::sort,这也不起作用。 std::sort 需要 2 或 3 个参数并且不返回任何值,因此在 x 向量中将没有引用任何值的索引。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-09-18
      • 2017-02-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多