我想存储我将生成的字符串列表。我不知道字符串的数量,如果列表中有相同的字符串,我也不想存储它们。然后我希望能够计算列表中的字符串数量。
谢谢!
答案 0 :(得分:0)
将std::set
用于自动保留元素排序的容器,并且只允许不同的元素(不重复),例如:
std::set<std::string> s;
s.emplace("Arthur");
s.emplace("Barry");
s.emplace("Barry");
s.emplace("Barry");
s.emplace("Charlie");
std::cout << std::size(s) << std::endl; // Outputs '3'.
如果您需要快速访问并且很少更新容器,您也可以使用std::vector
并在每次插入后删除所有重复项。
std::vector<std::string> v;
v.emplace_back("Arthur");
v.emplace_back("Barry");
v.emplace_back("Barry");
v.emplace_back("Barry");
v.emplace_back("Charlie");
std::sort(std::begin(v), std::end(v)); // Sort needed for 'std::unique' to always work.
v.erase(std::unique(std::begin(v), std::end(v)), std::end(v)); // Remove duplicates.
std::cout << std::size(v) << std::endl; // Outputs '3'.
std::vector
不保持元素排序。