指针的向量.如何使用
Vector of Pointers. How to use?
我目前正在为我的一个项目学习 c++。目前,我正在考虑使用指向类的指针向量(我将用从该基类派生的类填充该向量),因为我想访问特定于每个派生类的独特函数。不过,我不完全确定如何使用它,根据我对普通向量的经验,我理解开始工作会很痛苦,所以我只想知道几件事:
-
如何将对象添加到矢量?
-
如何删除矢量中的单个元素?
-
如何通过迭代器访问特定对象?例如,如何访问在向量中具有指针的对象的功能?
-
如何将迭代器传递给将指向对象的指针作为参数的函数?
还有什么我应该知道的吗?
示例设置,
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);
访问功能很容易,
Base* ptrToObj = *it; // Assuming it points to the correct element
ptrToObj->AnyFunc(); // You can also use (*it)->AnyFunc()
回答你的第四个问题,
AnyFuncThatAcceptsObjPtr(*it); // Again assuming it points to the correct element
还有什么我应该知道的吗?
是的,了解智能指针。
std::vector<SomeSmartPtr<Base> > smartPtrVec;
SomeSmartPtr<Base> smartPtr(new DerivedOne());
smartPtrVec.push_back(smartPtr);
smartPtrVec.erase(it); // With smart pointers, you don't need to delete explicitly
相关文章:
- 如何使用向量的template_back函数
- 在c++中使用向量时,如何调用构造函数和析构函数
- 使用向量类的c++指针
- 我使用向量来创建类对象列表.初始化向量时如何使用参数调用构造函数?
- C ++中的StringStream有助于使用向量从字符串中提取逗号分隔的整数,而不是空格分隔的整数,为什么?
- 代码使用向量成功运行,但使用数组显示错误
- 使用向量初始化参数化构造函数的对象数组
- 使用向量在 c++ 中合并排序实现
- 使用向量的缓冲区溢出
- 从数组中删除非唯一值、保持顺序和不使用向量的最佳方法?
- C++ 继承向量问题(无限循环+在其他类中使用向量的问题)
- C++ 不能在cout中使用向量和字符串文字
- 目标C++不能在枚举块中使用向量push_back
- 在 c++ 中,如何使用向量调用派生类?
- 在类和构造函数中使用向量时出现分段错误
- C++如何调用使用向量的成员函数
- Sysmalloc:使用向量的断言错误
- 有没有一种优雅的方法可以使用向量修改器并获得新的向量,而不是更改原始向量
- 在 extern 中声明一个使用向量的函数 "C" {}
- 如何修复错误:使用向量查找最小值和最大值进行合并排序