c++ 来自迭代器的向量 push_back 指针

问题描述 投票:0回答:1
#include <unordered_map>
#include <set>
struct struct_ {};
class class_ {
public:
    std::vector<struct_*>vectorStructPointers;

};
std::set<class_>setClass;
std::vector<struct_>vectorStruct;
int main() {
    auto itvs = vectorStruct.begin();
    auto itsc=setClass.begin();
    itsc->vectorStructPointers.push_back(&*itvs);
    return 0;
}

Severity    Code    Description Project File    Line    Suppression State
Error (active)  E1087   no instance of overloaded function "std::vector<_Ty, _Alloc>::push_back [with _Ty=struct_ *, _Alloc=std::allocator<struct_ *>]" matches the argument list and object (the object has type qualifiers that prevent a match)  P1  
P1\Simplify.cpp 14      

盯着这个看了几个小时。 不明白: 1)std::分配器 2)我的push_back有什么问题。

请帮忙

c++ pointers compiler-errors containers intellisense
1个回答
0
投票

一个

std::set
的元素是
const
并且不能被修改。

所以

itsc->vectorStructPointers
也是
const
并且
push_back
不能被调用,因为它是一个非
const
成员函数。

错误消息提示:

the object has type qualifiers that prevent a match
(类型限定符是
const

如果要修改元素,不能用

std::set
。它应该保持元素有序,因此不允许修改它们。

© www.soinside.com 2019 - 2024. All rights reserved.