使用对象名称标识容器中的对象
Identify an object in a container using object name?
如果存在以下向量1:
vector<string*> cont; // cont[0] == "0"
,其中指向字符串的指针命名为l
或r
;顺序添加,如下所示:
string r* = new string("1");
cont.emplace_back(r);
或:
string l* = new string("-1");
cont.emplace_back(l);
例如:如果给定一个节点的方向,如:"lrlrrr"
.
是否有一种方法可以使用字符串名称l
和r
搜索向量,作为"元素id"而不是字符串内容2?
注意:我已经研究了通过原生属性找到向量元素,但是,如果有其他方法,我很感兴趣。
<一口> 1。向量按顺序(逐层)存储二叉树的节点,其中每个左节点l
的值为:父值- 1,每个右节点r
的值为:父值+ 1。一口>
<一口> 2。一口>
在c++中使用指向string的指针通常是奇怪的,因为string内部包含指向char的指针,给出双索引。但在这个用例中,如果存储指向相同常量对象的指针:
, 是有意义的。static string _r = "1";
static string _l = "-1";
const string * r = &_r;
const string * l = &_l;
那么你可以写
cont.emplace_back(r);
或
cont.emplace_back(l);
因为当迭代指针向量时你可以使用if (cont[i] == r) ...
如果你真的在每一步构建新的不同的对象,存储指针只有在你需要多态性的时候才有意义,但是如果你没有一组已知的可能的对象,它将很难作为身份进行测试。
是否有一种方法来搜索通过使用字符串名称的向量?
不能,因为名称l
或r
是局部变量1,在字符串存储到vector中后被销毁。存储后,向量索引成为存储字符串的"名称"。
<一口> 1。一口>
l
和r
是右值,它们的地址不能在包含它们的函数执行后获得。
相关文章:
- 什么时候调用组成单元对象的析构函数
- 对RValue对象调用的LValue ref限定成员函数
- CMake-按正确顺序将项目与C运行时对象文件链接
- 空基优化子对象的地址
- 将对象数组的引用传递给函数
- 你能重载对象变量名本身返回的内容吗
- C++使用整数的压缩数组初始化对象
- 找不到成员对象:没有名为get_event()的成员,也处理多态性和向量
- 将对象移动到std::shared_ptr
- 代理对象的常量正确性
- 提升 ASIO 无法识别计时器对象
- 将Ref对象作为类成员
- 将包含C样式数组的对象初始化为成员变量(C++)
- OOP 标识派生对象
- 如何获取由文件标识的流对象?
- 在c++中唯一标识任意对象
- 使用对象名称标识容器中的对象
- c++中使用指针的对象类型标识
- 如何从另一个进程中寻址由给定IUnknown*标识的COM对象?
- 无法调用派生类的方法 - 编译器将对象实例标识为基类