使用对象名称识别容器中的对象?
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
搜索向量,如 "element id" 而不是字符串内容2?
注意:我已经研究过 native property 寻找向量元素,但是,如果有其他方法,我很感兴趣。
1.该向量按顺序(逐层)存储二叉树的节点,其中每个左节点的 l
值为:父值 - 1 和每个右节点的 r
,值为:父值+1。
2。比较当前节点值和先前节点值确定当前节点是左还是右。
在 C++ 中使用指向字符串的指针通常很奇怪,因为字符串内部包含指向 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) ...
如果你真的在每一步都构建新的不同对象,那么存储指针只有在你需要多态性时才有意义,但如果你不知道一组可能的对象,就很难测试身份。
Is there a way to search through the vector using the string names?
否,因为名称 l
或 r
是局部变量 1,在字符串存储到向量中后会被销毁。存储后,矢量索引变为存储字符串的 "names"。
1. l
和r
是右值,执行包含它们的函数后无法获取它们的地址。
如果有如下向量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
搜索向量,如 "element id" 而不是字符串内容2?
注意:我已经研究过 native property 寻找向量元素,但是,如果有其他方法,我很感兴趣。
1.该向量按顺序(逐层)存储二叉树的节点,其中每个左节点的 l
值为:父值 - 1 和每个右节点的 r
,值为:父值+1。
2。比较当前节点值和先前节点值确定当前节点是左还是右。
在 C++ 中使用指向字符串的指针通常很奇怪,因为字符串内部包含指向 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) ...
如果你真的在每一步都构建新的不同对象,那么存储指针只有在你需要多态性时才有意义,但如果你不知道一组可能的对象,就很难测试身份。
Is there a way to search through the vector using the string names?
否,因为名称 l
或 r
是局部变量 1,在字符串存储到向量中后会被销毁。存储后,矢量索引变为存储字符串的 "names"。
1. l
和r
是右值,执行包含它们的函数后无法获取它们的地址。