无法将集合的元素插入C++中的向量

Posted

技术标签:

【中文标题】无法将集合的元素插入C++中的向量【英文标题】:Fail to insert the element of the set to the vector in c++ 【发布时间】:2015-12-14 13:02:04 【问题描述】:

给定一组整数:

set<int> setA = 1,2,3,4,5;

现在我想在特定条件下将整数插入整数向量:

vector<int> vectorB;
for (set<int>::iterator it = setA.begin(); it != setB.end(); it++)

      if (*it % 2 == 0)
      else
        vectorB.insert((*it));
        count += 1;
       

但我得到一个错误:

error: no matching function for call to 'std::vector<int>::insert(const int&)'

为什么?

【问题讨论】:

en.cppreference.com/w/cpp/container/vector/insert - 实际上没有任何“官方”C++ 文档,但 cppreference 非常好。 要简单地添加(没有其他要求)元素到集合中,您应该使用push_back 而不是insert @LightnessRacesinOrbit 实际上我做到了。但我无法立即找到答案。现在我明白了。谢谢。 如果您无法“立即”找到答案,请多花几分钟时间阅读。并非所有事情都可以“立即”解决。需要一些耐心。 @yobichi Surly 写这个问题比阅读description 的std::vector::insert 花费更长的时间? 【参考方案1】:

正如其他人在 cmets 中提到的那样,在这种情况下您不应该使用 insert,而应该使用 push_back

vectorB.push_back(*it);

如果您想要插入新元素的特定位置,您通常会使用insert。如果您对将元素添加到特定位置不感兴趣,那么您可以使用push_back 来(顾名思义)将元素添加到向量的末尾。

【讨论】:

以上是关于无法将集合的元素插入C++中的向量的主要内容,如果未能解决你的问题,请参考以下文章

C++ 结构集无法按元素查找/擦除

关于将元素插入向量的 C++ 问题

使用集合存储自定义类,只有第一个插入有效

将元素插入已排序的向量中

如何返回包含不在集合中的元素的向量的副本?

将向量的元素添加到无序集合