向量的指针向量

Posted

技术标签:

【中文标题】向量的指针向量【英文标题】:Vector of pointers to vectors 【发布时间】:2018-04-22 17:29:43 【问题描述】:

如何创建和访问指向。 我的意思是:

std::vector<size_t>, vec1, vec2, vec3;

int main() 
    std::vector<std::vector<size_t>*> vecP 
        &vec1,
        &vec2,
        &vec3
    ;

像这样初始化 vecP 似乎可行,或者至少在 Visual Studio 中,它没有给出任何指示语法错误的红色下划线。 但是,如果我尝试像这样访问它:

    //continuing int main()
    vecP[1].resize(6);
    //or
    vecP[1][3] = 7;

它不起作用。

关于表达式的东西必须有类类型,如果我用 vecP 替换上面块中的 vecP,它会说没有运算符 "" 匹配这些操作数。

我对 c++ 中的指针概念还很陌生,我确信解决方案很简单,但无论如何,我们都会感谢所有帮助。

【问题讨论】:

了解何时使用-&gt; 语法。 为什么你想使用指向向量的指针?这应该解决什么问题? @PaulMcKenzie 我以前见过他们,我调查过,但我似乎无法在网上找到任何能以我能理解的方式解释的东西,我肯定通过研究其他人的代码来学得更好看看做什么。 我推荐你get a couple of good books to read。 @Someprogrammerdude 这与问题无关,但答案很简单,因为我需要更改 vec1 vec2 等的值,但我将它们放在向量中,因为我正在使用 for 循环通过他们每个人。另外,如果我可以免费或在当地图书馆找到任何书籍,我也会接受您的书籍建议。我很惊讶他们仍然制作它们,而不仅仅是在线发布它们。 【参考方案1】:

鉴于您的声明,您需要

vecP[1]->resize(6);
// or
vecP[1]->at(3) = 7;

问题在于,由于您的(***)向量元素是指针,因此您需要取消引用它们才能访问它们的内容。最简单的取消引用方法是使用-&gt; 而不是.,就像我在上面所做的那样,但您也可以使用(一元)*

【讨论】:

以上是关于向量的指针向量的主要内容,如果未能解决你的问题,请参考以下文章

如何将唯一指针从一个向量移动到另一个唯一指针向量? [关闭]

将指向向量向量的指针移动到特定位置

如何创建指向向量的指针向量

从类指针向量创建成员变量向量

当向量在内部类中时,如何删除指向对象的向量指针

访问指向多维向量的指针向量中的元素