C++ C++;VLOOKUP函数的等价性

C++ C++;VLOOKUP函数的等价性,c++,csv,vlookup,C++,Csv,Vlookup,我正在尝试为一个二维csv文件创建一个与excel VLOOKUP函数等价的函数。如果给定一个数字5,我希望能够查看我拥有的动态表的一列,并找到该列中最高数字小于5的行 比如说。如果我之前使用了示例中的5: 2 6 3 7 4 11 6 2 9 4 将返回到me 11,数据与5以下的最高条目配对 我不知道该怎么做。如果有帮助,第一列(我将搜索的列)中的条目将从最小变为最大 我是C++初学者,所以我道歉如果我缺少一些明显的方法。< /P> < P> STD::MAP可以很容易做到:

我正在尝试为一个二维csv文件创建一个与excel VLOOKUP函数等价的函数。如果给定一个数字5,我希望能够查看我拥有的动态表的一列,并找到该列中最高数字小于5的行

比如说。如果我之前使用了示例中的5:

2  6
3  7
4  11
6  2
9  4
将返回到me 11,数据与5以下的最高条目配对

我不知道该怎么做。如果有帮助,第一列(我将搜索的列)中的条目将从最小变为最大


<>我是C++初学者,所以我道歉如果我缺少一些明显的方法。< /P> < P> <代码> STD::MAP<代码>可以很容易做到:

首先创建正确类型的映射,然后用数据填充它:

std::map<int, int, std::greater<int> > data;

data[2] = 6;
data[3] = 7;
data[4] = 11;
data[6] = 2;
data[9] = 4;
几个注意事项:首先,注意使用
std::greater
作为比较运算符。这是必要的,因为如果您要查找的键在映射中不存在,
下限
通常会将迭代器返回到下一项(而不是上一项)。使用
std::greater
将映射反向排序,因此“下一个”项是较小的项,而不是较大的项


其次,请注意,这会根据键自动对数据进行排序,因此它只取决于插入的数据,而不是插入的顺序。

std::map
可以很容易地做到这一点:

首先创建正确类型的映射,然后用数据填充它:

std::map<int, int, std::greater<int> > data;

data[2] = 6;
data[3] = 7;
data[4] = 11;
data[6] = 2;
data[9] = 4;
几个注意事项:首先,注意使用
std::greater
作为比较运算符。这是必要的,因为如果您要查找的键在映射中不存在,
下限
通常会将迭代器返回到下一项(而不是上一项)。使用
std::greater
将映射反向排序,因此“下一个”项是较小的项,而不是较大的项


其次,请注意,这会根据键自动对数据进行排序,因此它只取决于插入的数据,而不是插入的顺序。

这方面的数据结构是什么?如果您看到两个这样的整数,那么
std::map
将是合适的。那是你的吗?或者你有一个由
int
组成的二维数组吗?它是两个整数。谢谢你的帮助!好的,它是两个整数,但是你把它们存储在什么里面呢?它是不是一个
std::map
?你已经写了代码了吗?你的数据结构是什么?如果您看到两个这样的整数,那么
std::map
将是合适的。那是你的吗?或者你有一个由
int
组成的二维数组吗?它是两个整数。谢谢你的帮助!好的,它是两个整数,但是你把它们存储在什么里面呢?它是不是一个
std::map
?你写了代码了吗?如果我的地图数据是动态的,可以添加更多的条目?@user2570010:Maps是用来处理动态添加/删除的,所以如果你想添加更多,这不是问题。如果我的地图的数据是动态的,并且可以添加更多条目?@user2570010:Maps设计用于处理动态添加/删除,因此如果您想添加更多,这不是问题。