C++集合set容器可以插入数组元素吗?
我想用set容器保存一些字符数组,这样可以快速的保存、查询和删除数组元素。
已知字符数组都是12个字节的。
我这样声明set<char[12]>cmdIdTable有问题吗?
char str[12];
//对str的一些操作,str不是以0结尾的,char[11] !='\0'
cmdIdTable.insert(str)可以吗?
set容器的元素必须是可比较的吗?这样我是不是必须得为char[12]重载比较操作符呢?
[解决办法]
变通一下咯。
struct element{
char arr[12];
};
bool operator < (element const &, element const&);
std::set<element> datum;
记住数据有数据拷贝的开销'
[解决办法]
但是用数组是绝对不行的,容器要求元素类型是支持拷贝构造和扶植拷贝构造的。
另外,可以通过运算重载,让结构体用气来跟数组一样。
[解决办法]
用 std::array 就行了。
std::set<std::array<char,12>>