簡體   English   中英

相當於VLOOKUP函數的C ++

[英]C++ Equivalent of VLOOKUP function

我正在嘗試為我擁有的二維csv文件創建excel VLOOKUP函數的等效項。 如果給定數字5,我希望能夠查看我擁有的動態表的一列,並在該列中找到數字最大的行,該行小於5。

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

2  6
3  7
4  11
6  2
9  4

將返回我11,該數據與低於5的最高條目配對。

我不知道該怎么做。 如果有幫助,則第一列(我將搜索的列)中的條目將從最小到最大。

我是C ++的初學者,如果我缺少一些明顯的方法,我深表歉意。

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;

然后,您將使用lower_boundupper_bound搜索數據:

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

一些注意事項:首先,注意使用std::greater<T>作為比較運算符。 這是必要的,因為如果要查找的鍵未在地圖中,那么lower_bound通常會將迭代器返回到一項(而不是上一項)。 使用std::greater<T>對地圖進行反向排序,因此“下一個”項目較小,而不是較大。

其次,請注意,這會根據鍵自動對數據進行排序,因此它僅取決於您插入的數據,而不取決於插入的順序。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM