Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        5年前关闭。
                                                                                            
                
        
我现在正在使用同事的一些代码,这些同事在C ++中创建了一个不可取的容器。容器看起来像:

NoDeleteContainer<MyObject> objList;


使用他的容器,我现在在objList内部创建一些对象。我现在要做的是分析每个对象内幕objList的特征,如果对象的特征满足某些条件,我将保留它们。那么我现在的问题是,我不知道保留它们的最佳方法是什么,我可以找到几种解决方案:

解决方案1:

NoDeleteContainer<MyObject*> selObjPointerList;
//selObjPointerList will then keeps the pointer to the selected objects.


解决方案2:

std::vector indictorVec(objList.size(),false);
   // change the indictor's value to true if its corresponding MyObject fulfill the requirements.


解决方案3:

std::vector<MyObject*> selObjPointerList;
   // similar to Solution 1


然后我的问题是哪种解决方案是最好的,或者如果您有新的解决方案,请随时讨论。

最佳答案

在不可变容器上进行变型的通常方法是创建仅包含选定项目的容器新实例。

在过滤过程中使用可变容器可能会有所帮助。

在某些样式的多线程编程中通常会遇到不可变的容器。

关于c++ - 如果我们无法从C++容器中删除元素怎么办,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/21118322/

10-11 22:24
查看更多