Java C++;列出用法

Java C++;列出用法,java,c++,arraylist,Java,C++,Arraylist,在Java中有一个名为ArrayList的集合。它允许程序员添加一个T类型的对象,并通过发出一个简单的方法将其删除,如 list.remove(object); list.add(object); 对于C++,我发现标准向量只使用值对象,所以我不知道如何实现相同的功能。 情况是,我想在其他地方保留对对象的引用,为什么我可以使用某种组合模式删除或添加它。我想问的是如何在C++中实现这样的功能: class Composite { ArrayList<Composite> chi

在Java中有一个名为ArrayList的集合。它允许程序员添加一个T类型的对象,并通过发出一个简单的方法将其删除,如

list.remove(object);
list.add(object);
对于C++,我发现标准向量只使用值对象,所以我不知道如何实现相同的功能。 情况是,我想在其他地方保留对对象的引用,为什么我可以使用某种组合模式删除或添加它。我想问的是如何在C++中实现这样的功能:

class Composite {

  ArrayList<Composite> children = new ArrayList<>();

  public void addChild(Composite child) {
    children.add(child);
  }


  public void removeChild(Composite child) {
    children.remove(child)
  }
}


class Test{
  public static void main() {
    Composite a = new Composite();
    Composite b = new Composite();
    a.addChild(b);
    a.removeChild(b);

    // from here on a.children is empty.        
  }

} 
类组合{
ArrayList子项=新的ArrayList();
公共void addChild(复合子级){
添加(child);
}
public void removeChild(复合子级){
儿童。移除(儿童)
}
}
课堂测试{
公共静态void main(){
复合材料a=新复合材料();
复合材料b=新复合材料();
a、 儿童(b);
a、 removeChild(b);
//从这里开始,孩子们是空的。
}
} 
我甚至不知道如何用C++来咬这个东西。谢谢


更新:多亏了ResidenBiscuit的回答和其他评论,我才能够找到这方面的基本代码,可以在这个pastebin url上找到:

在Java中,除了POD之外的所有内容都是参考。没有指定您想要引用,因为这就是您得到的全部

<>不是在C++中那么多。一切都默认为价值。如果需要引用类型的
std::list
,则需要一个支持C++11 std::reference\u包装器的编译器。然后,您可以执行以下操作:

std::list t\u list

要添加到此列表,您需要使用std::ref:

t\u列表。向后推(std::ref(myObj))

现在,添加到此列表中的所有内容都将是std::reference\u包装类型。您也可以通过执行以下操作来存储指针:

std::list tptr\u list


如果没有兼容C++11的编译器,这可能更容易,或者是唯一的选择。

查找STL容器,尤其是
std::list
std::vector
是您想要的,您可以使用
std::remove
删除元素。您无法创建引用向量。对于指针,您的答案仍然有效,否则您必须使用std::reference_包装器。
std::vector
不支持按照OP的请求随机删除项(没有迭代器)。IMHO
std::list
是正确的java等价物。这是真的。我需要能够移除我放入容器中的内容。然后只需将
std::vector
更改为
std::list
,您将被设置为:)好的,您也可以对您的答案执行此操作,以便我可以接受:)