如果有以下载体 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 < / SUP>?
注意:我已经研究过native property找到一个向量元素,但是,如果有其他方法,我很感兴趣。
1。向量按顺序(逐级)存储二叉树的节点,其中每个左节点的l
值为:父值-1 和每个右节点的{{1} },value是:父值+ 1 。功能
2。比较当前节点值和先前节点值确定当前节点是向左还是向右。
答案 0 :(得分: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) ...
如果你真的在每一步上构建了新的不同对象,那么存储指针只有在你需要多态时才有意义,但是如果你没有一组可能的对象就很难测试身份。
答案 1 :(得分:1)
有没有办法使用字符串名称搜索向量?
不,因为名称l
或r
是局部变量 1 ,在字符串存储在向量中后会被销毁。存储后,矢量索引将成为存储字符串的&#34;名称&#34; 。
1。 l
和r
是 rvalues ,并且在执行包含它们的函数后无法获取它们的地址。