如何在std :: vector中更新最近输入的元素 >?

问题描述 投票:2回答:3

如何在对类型的任何向量类中更新对的值?

示例:

V.push_back(make_pair(1, 3));

如果我想更新35或其他什么,我该如何实现?

c++ stdvector std-pair
3个回答
4
投票

假设你想在插入std::pair之后更新最后一个std::vector<std::pair<int, int>>输入。

中,您可以使用std::vector::emplace_back的第二个重载,它会向插入的元素返回一个referance:

#include <vector>

std::vector<std::pair<int, int>> vec;
auto &pair = vec.emplace_back(1, 3); // construct in-place and get the reference to the inserted element
pair.second = 5;                     // change the value directly like this

更新:

中,std::vector::insert成员可以实现相同的功能,它返回指向插入元素的迭代器。

#include <vector>

std::vector<std::pair<int, int>> vec;
// insert the element to vec and get the iterator pointing to the element
const auto iter = vec.insert(vec.cend(), { 1, 3 });
iter->second = 5; // change the value

3
投票

您可以访问vector中的值,并设置要更改的值。假设你有可变的访问你的vector

V.back().first = 1;
V.back().second = 2;

如果你知道vector中项目的索引,你可以使用operator[]at来获得对项目的引用。您还可以将新值复制到同一位置。

V[0] = std::make_pair(3, 5);

1
投票

如果i是包含std::vectorstd::pair中的索引,您希望更新:

vec.at(i).second = 5;

另请注意,std::pair会覆盖=运算符,因此您可以再次分配整个对:

vec.at(i) = std::make_pair(val1, val2);
© www.soinside.com 2019 - 2024. All rights reserved.