如何将数字库函数与成对的向量一起使用

How to use numeric library function with a vector of pairs?

本文关键字:向量 一起 数字 库函数      更新时间:2024-09-27

我正试图在成对向量(vector<pair<double,double>>(的每个条目的第二个元素上使用numeric库中的函数adjacent_difference。我该怎么做?

更新:这是我到目前为止的代码(显然是错误的xD(:

vector <pair<double,double>> initvalues; //receives pairs with the structure (174.386, 10)
for(int i = 0; i < 10; ++i)
{
initvalues.push_back(make_pair(i, 2+i));
}
vector <pair<double,double>> result(initvalues.size()-1);
adjacent_difference((initvalues.second).begin(),(initvalues.second).end(), (result.second).begin());

initvalues是我的主向量,它以结构(174.386,10(为例分配valus对。result是我想要的输出,它将把initvalues矢量的第一个条目存储在第一对条目中,把adjacent_difference存储在该对的第二个条目中。

然而,我在编译粘贴在这里的代码的终端中获得了以下输出:

stack.C: In function ‘int main()’:
stack.C:16:35: error: ‘class std::vector<std::pair<double, double> >’ has no member named ‘second’
16 |   adjacent_difference((initvalues.second).begin(), (initvalues.second).end(), (result.second).begin());
|                                   ^~~~~~
stack.C:16:64: error: ‘class std::vector<std::pair<double, double> >’ has no member named ‘second’
16 | adjacent_difference((initvalues.second).begin(), (initvalues.second).end(), (result.second).begin());
|                                                              ^~~~~~
stack.C:16:87: error: ‘class std::vector<std::pair<double, double> >’ has no member named ‘second’
16 | nitvalues.second).begin(), (initvalues.second).end(), (result.second).begin());
|                                                               ^~~~~~

如果我理解你,这就是你想要的:

vector<pair<double, double>> initvalues; 
for (int i = 0; i < 10; ++i) {
initvalues.push_back(make_pair(i, 2 + i));
}
vector<pair<double, double>> result;
result.reserve(initvalues.size());
adjacent_difference(initvalues.begin(), initvalues.end(),
std::back_inserter(result),
[](const auto& l, const auto& r) {
return std::pair<double, double>{l.first, l.second - r.second};
});

这给了你:

initValues = {0, 2} {1, 3} {2, 4} {3, 5} {4, 6} {5, 7} {6, 8} {7, 9} {8, 10} {9, 11} 
result     = {0, 2} {1, 1} {2, 1} {3, 1} {4, 1} {5, 1} {6, 1} {7, 1} {8, 1} {9, 1}