C++ 如何使用成对向量的数字库函数?

C++ 如何使用成对向量的数字库函数?,c++,vector,stl,numeric,std-pair,C++,Vector,Stl,Numeric,Std Pair,我试图在成对向量(vector)的每个条目的第二个元素上使用numeric库中的函数nexture\u difference)。我怎么做 更新:这是我到目前为止的代码(显然是错误的xD): 如果我理解你,这就是你想要的: vector<pair<double, double>> initvalues; for (int i = 0; i < 10; ++i) { initvalues.push_back(make_pair(i, 2 + i)); } ve

我试图在成对向量(
vector
)的每个条目的第二个元素上使用
numeric
库中的函数
nexture\u difference
)。我怎么做

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


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

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};
    });

那好多了,谢谢。投票重新开放。次要的一点是,关于“…结构(174.386,10)作为示例…”的注释似乎不适用,因为您现在正在示例中创建值
(0,2),(1,3),…
    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}