指针向量。如何使用? 我目前正在学习一个我的项目C++。目前,我正在考虑使用指向类的指针向量(我将用从这个基类派生的类填充),因为我希望访问每个派生类特有的唯一函数。但是,我不完全确定如何使用它,根据我对法向量的经验,我理解如何使用它是一件痛苦的事情,所以我只想知道几件事:
如何将对象添加到向量指针向量。如何使用? 我目前正在学习一个我的项目C++。目前,我正在考虑使用指向类的指针向量(我将用从这个基类派生的类填充),因为我希望访问每个派生类特有的唯一函数。但是,我不完全确定如何使用它,根据我对法向量的经验,我理解如何使用它是一件痛苦的事情,所以我只想知道几件事:,c++,pointers,vector,C++,Pointers,Vector,如何将对象添加到向量 如何删除向量中的单个元素 如何通过迭代器访问特定对象?例如,如何访问向量中有指针的对象的函数 如何将迭代器传递给以对象指针为参数的函数 还有什么我应该知道的吗?示例设置 class Base { }; class DerivedOne : public Base { }; class DerivedTwo : public Base { }; std::vector<Base*> ptrVec; 要删除 ptrVec.push_back(new Deri
class Base
{
};
class DerivedOne : public Base
{
};
class DerivedTwo : public Base
{
};
std::vector<Base*> ptrVec;
要删除
ptrVec.push_back(new DerivedOne());
ptrVec.push_back(new DerivedTwo());
std::vector<Base*>::iterator it;
/* Make sure it points to the correct element. */
delete *it;
ptrVec.erase(it);
AnyFuncThatAcceptsObjPtr(*it); // Again assuming it points to the correct element
回答你的第四个问题
ptrVec.push_back(new DerivedOne());
ptrVec.push_back(new DerivedTwo());
std::vector<Base*>::iterator it;
/* Make sure it points to the correct element. */
delete *it;
ptrVec.erase(it);
AnyFuncThatAcceptsObjPtr(*it); // Again assuming it points to the correct element
还有什么我应该知道的吗?
是的,了解
std::vector smartPtrVec;
SomeSmartPtr smartPtr(new-DerivedOne());
smartPtrVec.推回(smartPtr);
smartPtrVec.擦除(它);//使用智能指针,您不需要显式删除
提示:使用智能指针向量,而不是原始指针。前两个问题可以通过std::vector
引用轻松回答,第三个问题可以通过随机访问迭代器(vector使用的迭代器)上的引用轻松回答。学习如何使用引用在编程中是一个巨大的帮助。如果你打算建议/提倡使用指针作为容器元素,至少建议使用智能指针而不是原始指针。