在C中,分隔符可以用Nulls和char * - >的地图替换。具有比较功能的char *可以工作。
我试图找出在Modern C ++中实现这一目标的最快方法。我们的想法是避免在地图中复制字符。
std::string sample_string("name=alpha;title=something;job=nothing");
到
std::map<std::string,std::string> sample_map;
不复制字符。
可以丢失原始输入字符串。
答案 0 :(得分:1)
两个std :: strings不能指向相同的底层字节,所以不能用字符串做。
为避免复制字节,您可以使用迭代器:
struct Slice {
string::iterator begin, end;
bool operator < (const& Slice that) const {
return lexicographical_compare(begin, end, that.begin, that.end);
}
};
std::map<Slice,Slice> sample_map;
请注意,如果修改原始字符串,则所有迭代器都将无效。