VLOOKUP 函数的 C++ 等价物

标签 c++ csv vlookup

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

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

2  6
3  7
4  11
6  2
9  4

会返回给我 11,数据与低于 5 的最高条目配对。

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

我是 C++ 的初学者,所以如果我遗漏了一些明显的方法,我深表歉意。

最佳答案

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

您首先要创建一个正确类型的 map ,然后用您的数据填充它:

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

data[2] = 6;
data[3] = 7;
data[4] = 11;
data[6] = 2;
data[9] = 4;

然后您将使用 lower_bound 搜索数据或 upper_bound :

std::cout << data.lower_bound(5)->second; // prints 11

几个注意事项:首先,注意 std::greater<T> 的使用作为比较运算符。这是必要的,因为 lower_bound如果您要查找的键不在 map 中,通常会将迭代器返回到下一个 项(而不是上一个)。使用 std::greater<T>对 map 进行反向排序,因此“下一个”项目是较小的而不是较大的。

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

关于VLOOKUP 函数的 C++ 等价物,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18045246/

相关文章:

c++ - ifstream::read 不断返回不正确的值

c++ - FormatMessage 中是否有明确定义的大小限制?

php - 如何在codeigniter中将csv文件导入到mysql

python-3.x - psycopg2.DataError : invalid input syntax for type double precision: "NULL"

VBA VLOOKUP 转换为值给出 #N/A

vba - Excel 根据列名称而不是单元格名称查找数据

excel - Vlookup 上的单元格变化

c++ - C++ Boost中有回收池结构吗?

c++ - 每个 C 或 C++ 文件都应该有一个关联的头文件吗?

JavaScript - 将 CSV 转换为 XLSX(最好不使用库)