C++ 包含指向向量指针的结构的指向向量指针
如何访问此向量以更改值?C++ 包含指向向量指针的结构的指向向量指针,c++,pointers,vector,struct,C++,Pointers,Vector,Struct,如何访问此向量以更改值?(*keys)[size\uz] 这个是对的 (*键)【大小】->(*值)【大小】 但这个不是。看起来你在调用(*value)[size],这毫无意义。这是一个语法错误 因此,您必须首先调用该值,然后将其作为一个整体取消引用。像这样(*键) 之后,您现在可以访问它的索引和其中的对象 (*((*键)[大小]->值])[size]=&value(*键)[大小] 这个是对的 (*键)【大小】->(*值)【大小】 但这个不是。看起来你在调用(*value)[size],这毫无意义
(*keys)[size\uz]
这个是对的
(*键)【大小】->(*值)【大小】
但这个不是。看起来你在调用(*value)[size],这毫无意义。这是一个语法错误
因此,您必须首先调用该值,然后将其作为一个整体取消引用。像这样(*键)
之后,您现在可以访问它的索引和其中的对象
(*((*键)[大小]->值])[size]=&value代码>(*键)[大小]
这个是对的
(*键)【大小】->(*值)【大小】
但这个不是。看起来你在调用(*value)[size],这毫无意义。这是一个语法错误
因此,您必须首先调用该值,然后将其作为一个整体取消引用。像这样(*键)
之后,您现在可以访问它的索引和其中的对象
(*((*键)[大小]->值])[size]=&value代码>好吧,*值在本文中不在范围内。它在括号中,因此将单独计算。要实现价值,您需要:
int size = yourSize;
(*((*keys_)[size_]->value))
然后你想取消对它的引用:
(*keys_)[size_]->value
额外的一组参数可能是没有必要的,但它让事情变得清楚了。然后,您要为其编制索引:
*((*keys_)[size_]->value)
我假设size
和size
是正确的,不同的指数。小心你的名字。这种相似性很容易把你绊倒
作为一个旁注,请认识到使用<代码>新< /C>几乎不是你在现代C++中想要做的。您可能希望改用智能指针。
嗯,*值在本上下文中不在范围内。它在括号中,因此将单独计算。要实现价值,您需要:
int size = yourSize;
(*((*keys_)[size_]->value))
然后你想取消对它的引用:
(*keys_)[size_]->value
额外的一组参数可能是没有必要的,但它让事情变得清楚了。然后,您要为其编制索引:
*((*keys_)[size_]->value)
我假设size
和size
是正确的,不同的指数。小心你的名字。这种相似性很容易把你绊倒
作为一个旁注,请认识到使用<代码>新< /C>几乎不是你在现代C++中想要做的。您可能想改用智能指针。
行的快速修复方法是:(*((*keys)[size\u]->value])[size]=inputValue代码>
但说真的,不要使用C风格的指针。将您的代码改为:
(*((*keys_)[size_]->value))[size]
private:
结构信息{
int size=0;
int键=0;
int容量=1;
std::向量值;
}
int键容量;
int-size_389;;
向量键;
在这一职能中:
private:
struct info {
int size = 0;
int key = 0;
int capacity = 1;
std::vector<int> value;
}
int keyCapacity_;
int size_;
std::vector<std::unique_ptr<info>> keys_;
//一些代码
调整键大小(键容量);
//一些代码
keys_u[size_u]=std::make_unique();
键[size]->value[size]=输入值;
键[size]->size+=1;
键\[size \->key=key;
由于您没有给出完整的示例,我不能完全确定,但代码在我看来仍然是错误的,因为您似乎试图写入大小为0的向量。从我看来这应该行得通,但我认为这只是一种猜测:
//some code
keys_.resize(keyCapacity_);
//some code
keys_[size_] = std::make_unique<info>();
keys_[size_]->value[size] = inputValue;
keys_[size_]->size += 1;
keys_[size_]->key = key;
//一些代码
调整键大小(键容量);
//一些代码
keys_u[size_u]=std::make_unique();
按键\[size \]->value.向后推\(inputValue);
键[size]->size+=1;
键\[size \->key=key;
您的线路的快速修复方法是:(*((*keys)[size\u]>value])[size]=inputValue代码>
但说真的,不要使用C风格的指针。将您的代码改为:
(*((*keys_)[size_]->value))[size]
private:
结构信息{
int size=0;
int键=0;
int容量=1;
std::向量值;
}
int键容量;
int-size_389;;
向量键;
在这一职能中:
private:
struct info {
int size = 0;
int key = 0;
int capacity = 1;
std::vector<int> value;
}
int keyCapacity_;
int size_;
std::vector<std::unique_ptr<info>> keys_;
//一些代码
调整键大小(键容量);
//一些代码
keys_u[size_u]=std::make_unique();
键[size]->value[size]=输入值;
键[size]->size+=1;
键\[size \->key=key;
由于您没有给出完整的示例,我不能完全确定,但代码在我看来仍然是错误的,因为您似乎试图写入大小为0的向量。从我看来这应该行得通,但我认为这只是一种猜测:
//some code
keys_.resize(keyCapacity_);
//some code
keys_[size_] = std::make_unique<info>();
keys_[size_]->value[size] = inputValue;
keys_[size_]->size += 1;
keys_[size_]->key = key;
//一些代码
调整键大小(键容量);
//一些代码
keys_u[size_u]=std::make_unique();
按键\[size \]->value.向后推\(inputValue);
键[size]->size+=1;
键\[size \->key=key;