是否建议指定例如我的公共界面中的vector <t>?</t>

时间:2011-08-02 02:00:31

标签: c++ architecture

我是C ++的新手,在编写课程时,我意识到我的一种方法是要求矢量矢量。应该这样做还是我应该重新考虑我班级的界面? (如何?)

3 个答案:

答案 0 :(得分:7)

我认为您使用的容器没问题。你可以这样做

void func(std::vector<std::vector<int> > const& int_matrix);

或在C ++ 11中,后续>不会被视为'&gt;&gt;'所以你也可以使用

void func(std::vector<std::vector<int>> const& int_matrix);

但问题是,如果您的工作是作为二进制而不是源代码发布的,那么接口的用户应该具有与您相同的STL工具,否则可能会发生奇怪的运行时错误。因此在这种情况下使用STL容器作为接口是不合适的。您必须自己定义一些结构作为参数类型。

答案 1 :(得分:2)

矢量矢量不一定是坏事。如果你需要像多维数组那样的东西,那么你需要你需要的东西。 (只需确保通过[const]引用传递向量)。

您可能想要更改问题的标题,因为标题上写着“vector&lt; T &gt;” (大胆因为它认为它是一个HTML标签)但你的问题是关于向量的向量。

答案 2 :(得分:-1)

IMO,如果可能的话,最好将所有vector合并为一个vectorvector vector对我来说没有多大意义。