c – 如何生成具有唯一值的向量?

c – 如何生成具有唯一值的向量?,第1张

概述我有这个例子来生成一个向量中的唯一对象: #include <iostream>#include <vector>#include <algorithm>int v=0;struct A{ A() : refValue( v++) { std::cout<<"constructor refValue="<<refValue<<std::endl; } A( c 我有这个例子来生成一个向量中的唯一对象:
#include <iostream>#include <vector>#include <algorithm>int v=0;struct A{    A() : refValue( v++)    { std::cout<<"constructor refValue="<<refValue<<std::endl; }    A( const A &r ) : refValue(r.refValue)    { std::cout<<"copy constructor refValue="<<refValue<<std::endl; }    A& operator=( const A &r )    {        refValue = r.refValue;        std::cout<<"operator= refValue="<<refValue<<std::endl;        return *this;    }    ~A() { std::cout<<"destructor refValue="<<refValue<<std::endl; }    int refValue;};A GenerateUnique(){    A unique;    return unique;}struct B{    B( const int n) : v()    {        std::generate_n( std::back_inserter( v ),n,&GenerateUnique );    }    std::vector< A > v;};int main(){    B b(3);}

如果我把我的主要改成这个:

struct B{    B( const int n) : v(n)    {    }    std::vector< A > v;};

然后将一个A类型的对象复制到所有向量元素中.

有没有办法创建一个包含所有唯一对象的向量(如第一个示例中所示)?

为了更清楚:我有一个包含向量的类.此向量必须包含所有唯一对象(不是一个对象的副本).我想在初始化列表中初始化它(不在构造函数的主体中).

解决方法 你的第一次尝试是有效的.

在目前的标准C 03这一行

std::vector< A > as( n );

明确定义为创建一个A对象并复制n次.

我相信在C 0x中,这被改为创建n默认构造的As(一个小差异).然后,您或许可以在As构造函数中执行某些 *** 作,以使每个实例都是唯一的.

现在你不能.

总结

以上是内存溢出为你收集整理的c – 如何生成具有唯一值的向量?全部内容,希望文章能够帮你解决c – 如何生成具有唯一值的向量?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/langs/1238307.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-06
下一篇 2022-06-06

发表评论

登录后才能评论

评论列表(0条)

保存