【问题标题】:how to create a vector as an argument [closed]如何创建一个向量作为参数[关闭]
【发布时间】:2016-01-07 14:02:52
【问题描述】:

我有一个对象,它将向量作为它的构造函数参数之一。到我完成时,我将在 12 个文件中的每个文件中拥有大约 1000 个这些对象(包含在一个向量中),并且我一直在尝试布局。我能找到的最佳工作方式是在对象定义中创建所有参数。

这是该结构的基本版本:

struct MyObject {
  MyObject (vector<int>);
  vector<int> paraList;
}

所以我的对象定义看起来像这样:

MyObject object1 ( {0, 1, 2} );
MyObject object2 ( {0, 3, 1} );
MyObject object3 ( {5, 7, 5, 6} );
MyObject object4 ( {4} );

这可行,但我真正想做的是在向量定义中构造对象。像这样:

vector<MyObject> objectList {
  ( {0, 1, 2} ), 
  ( {0, 3, 1} ),
  ( {5, 7, 5, 6} ),
  ( {4} )  
};

感觉应该可以,但没有。我明白了:

error: expected primary-expression before '{' token
error: expected ')' before '{' token
error: expected '}' before ')' token

如果可能的话,我觉得我的语法是正确的,那么我试图做的事情是不可能的?

编辑:

抱歉,除了一些拼写错误外,我不确定为什么这是题外话。我一直在阅读规则,但我仍然不确定,您能否评论或 PM 我我做错了什么,以便我将来避免它?这不是抱怨,只是想确保我做对了。

【问题讨论】:

  • 去掉圆括号。
  • 你这个枪的儿子!在我尝试过的所有事情中,在谷歌搜索之后。非常感谢,请随时将其添加为答案,以便我打勾:D
  • 嗯,现在最后的 } 有问题;在列表的末尾。有什么想法吗?
  • 解释一下,由印刷错误引起的问题是题外话。你有一个你不应该有的开放括号,这就是问题的全部。由于拼写错误不太可能对未来的用户有所帮助,因为它们是小问题、易于修复且非常具体,因此被认为是题外话。
  • 啊,我想我们有误会。我不知道怎么做我之前问的,我只是尝试了一些看起来应该可行的想法。我用谷歌搜索了一下,但很难找到任何解释这个特定问题的东西。另外,我使用了错误的括号,最终简单地删除括号实际上并没有用,我需要额外的花括号。所以这并不是一个错字,而是缺乏专业知识。

标签: c++ c++11 vector arguments initializer-list


【解决方案1】:

你应该这样做:

std::vector<MyObject> objectList {{{0, 1, 2}} , {{0, 3, 1}} , {{5, 7, 5, 6}} ,{{4}}};

Live Demo

【讨论】:

  • 啊!谢谢,更像这样。非常高兴!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-06-29
  • 2016-03-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多