[英]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_bound
或upper_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.