2016-09-30 97 views
-3

我试图用gccC++矢量分配错误

#include <string> 
#include <vector> 

std::vector < std::string, std::vector < std::vector <int> > > plain; 

int main(){ 
return 0; 
} 

编译,但得到一个错误: 错误:“类的std ::矢量 “<” 的std :: __ cxx11 :: basic_string的,性病::分配器“< ”的std ::矢量“ <” 诠释>>>”没有成员名为 '取消分配'

+1

也许你想使用'std :: map'或'std :: unordered_map' ??。请参阅如何['mcve'](http://stackoverflow.com/help/mcve)以及一些强烈推荐的[C++文本](http://stackoverflow.com/questions/388242/the-definitive-c-book -guide和列表)。另外,[**'C++ tag' ** wiki](http://stackoverflow.com/tags/c%2b%2b/info)也有一些很好的指导,让你运行。 – WhiZTiM

+0

真的不太清楚你在这段代码中想要做什么。 正如其他人已经指出的,std :: vector的第二个参数必须是一个分配器,而不是另一个std :: vector类/实例 – bergercookie

回答

4

plainstd::vector<std::string, NotReallyAnAllocator>其中NotReallyAnAllocatorstd::vector < std::vector <int> >

A std::vector(任何东西)不是分配器,编译器明确地抱怨它没有实现必要的分配器接口。

我不确定你想达到什么目的,但如果你需要键值容器,请查看std::unordered_mapstd::map