在Java中,我们可以这样做:
ArrayList arrayList = new ArrayList<String>();
// Notice that String is not mentioned in the first declaration of array
反对
ArrayList<String> arrayList = new ArrayList<String>();
我们怎样才能在C ++中有类似的东西?
答案 0 :(得分:4)
不完全按照你写的方式。
您可以做的是以下其中一项,具体取决于您实际要完成的任务:
auto
自动适应类型:auto = new ArrayList<String>();
。这不会给你多态性,但它确实可以节省你在左侧键入typename。以下是第二种方法的示例:
class IArrayList // define a pure virtual ArrayList interface
{
// put your interface pure virtual method declarations here
};
template <typename T>
class ArrayList : public IArrayList
{
// put your concrete implementation here
};
然后,你可以在你的代码中说:
IArrayList* arrayList1 = new ArrayList<string>();
IArrayList* arrayList2 = new ArrayList<double>();
......等等。
答案 1 :(得分:2)
在c ++中,您无法使用vector array = new vector<string>()
,但在c ++ 11中,您可以使用auto
关键字:auto p = new vector<string>()
,它与vector<string> *p = new vector<string>()
相同。希望我的回答可以帮到你。