0
我寫這篇文章的代碼和我得到這個錯誤解引用一個迭代器:錯誤在C++設置和矢量
[Error] passing 'const std::vector' as 'this' argument of 'void std::vector<_Tp, _Alloc>::push_back(const value_type&) [with _Tp = metastock7, _Alloc = std::allocator, std::vector<_Tp, _Alloc>::value_type = metastock7]' discards qualifiers [-fpermissive]
struct A{
string name;
vector<B> rows;
};
set<A, classcomp> set;
vector<B> data; //I filled the vector in my code
std::set<A, classcomp>::iterator it;
std::pair<std::set<A, classcomp>::iterator,bool> ret;
for(int i = 0; i < data.size(); i++){
A a;
B b = data[i];
a.name= b.name;
ret = set.insert(a);
it = ret.first;
(*it).rows.push_back(b); //IT COMPILES WITHOUT
// it->rows.push_back(mstk7); //fails as well
}
我真的不理解的錯誤。你能幫忙嗎?
謝謝。
也許使用'map'會更理想 –
謝謝!我選擇設置只是因爲它不允許重複。是否有其他容器不允許重複? – user3665096
正如@OlivierPoulin所說,你可能會更喜歡'name'和'rows'之間的映射。看看['std :: map'](http://www.cplusplus.com/reference/map/map/)和['std :: unordered_map'](http://en.cppreference.com/瓦特/ CPP /容器/ unordered_map)。 – TartanLlama