将向量的内容复制到多集中

问题描述 投票:0回答:1

我已经尝试将std::vector的内容复制到像这样的std::multiset

std::vector<unsigned> v(32768);
std::generate(v.begin(), v.end(), rand);

std::multiset<unsigned> m(v.begin(), v.end());

但是,它只复制索引0-32768而不是valuesContents of the multiset

你如何将std::vector中的值复制到std::multiset中?

stl c++17 stdvector stl-algorithm multiset
1个回答
1
投票

但是,它只复制索引0-32768而不是值

你确定吗?

从您报告的屏幕截图中,在我看来,你有

0 1 3 4 6 6 6 ...

想一想你在std::vector中复制std::multiset所得到的:你得到重新订购的相同号码。

因此生成32768随机数,你已经获得了0,a 1,no 2,a 3,a 4,3或更多6。

在向量中处于非常不同的位置;在多组中,它们在开头,所以你可以认为你已经复制了索引。

建议:尝试减少生成的数字的数量(比如说16而不是32768),并且在向量生成和多重复制之后,打印它们。

事情如下

#include <algorithm>
#include <iostream>
#include <vector>
#include <set>


int main ()
 {
   std::vector<unsigned> v(16);
   std::generate(v.begin(), v.end(), rand);

   std::multiset<unsigned> m(v.begin(), v.end());

   for ( auto const & ui : v )
      std::cout << ui << ' ';

   std::cout << std::endl;

   for ( auto const & ui : m )
      std::cout << ui << ' ';

   std::cout << std::endl;
 }

运行它,我得到

1804289383 846930886 1681692777 1714636915 1957747793 424238335 719885386 1649760492 596516649 1189641421 1025202362 1350490027 783368690 1102520059 2044897763 1967513926 
424238335 596516649 719885386 783368690 846930886 1025202362 1102520059 1189641421 1350490027 1649760492 1681692777 1714636915 1804289383 1957747793 1967513926 2044897763

这在我看来绝对合情合理。

如何将std :: vector中的值复制到std :: multiset中?

正如我所理解的那样,你已经做好了。

© www.soinside.com 2019 - 2024. All rights reserved.