21xrx.com
2024-12-22 15:45:18 Sunday
登录
文章检索 我的文章 写文章
C++ 防止重复数据出现的方法
2023-07-05 12:13:27 深夜i     --     --
C++ 防止 重复数据 出现 方法

在C++中,防止重复数据出现是非常重要的。重复数据不仅会导致程序运行出错,还会影响程序的效率和准确性。以下是一些防止重复数据出现的方法。

1. 使用std::set

std::set是STL中的一种容器,它可以自动按照元素的大小进行排序,并且可以自动去重。使用std::set来存储数据,可以保证数据不重复。

下面是一个使用std::set的例子:


#include <iostream>

#include <set>

using namespace std;

int main()

{

  set<int> s;

  s.insert(1);

  s.insert(2);

  s.insert(3);

  s.insert(1); // 添加重复元素

  s.insert(4);

  set<int>::iterator it;

  for(it=s.begin(); it!=s.end(); ++it)

  {

    cout << *it << " ";

  }

  return 0;

}

输出结果:1 2 3 4

可以看到,使用std::set可以自动去重,输出结果中没有重复的数字。

2. 使用std::map

std::map是STL中的另一种容器,它可以用来存储键值对。可以将数据作为键值对存储在std::map中,如果重复添加相同的数据,则会自动覆盖以前的数据。

下面是一个使用std::map的例子:


#include <iostream>

#include <map>

using namespace std;

int main()

{

  map<int, string> m;

  m.insert(make_pair(1, "apple"));

  m.insert(make_pair(2, "banana"));

  m.insert(make_pair(3, "orange"));

  m.insert(make_pair(1, "pear")); // 添加重复元素,自动覆盖

  map<int, string>::iterator it;

  for(it=m.begin(); it!=m.end(); ++it)

  

    cout << it->first << ": " << it->second << endl;

  

  return 0;

}

输出结果:

1: pear

2: banana

3: orange

可以看到,在第4行中添加了一个重复元素,但是输出结果中仍然只有一个1,因为自动覆盖了之前的"apple"。

3. 使用std::unordered_set

std::unordered_set是STL中的一种容器,它可以用来存储数据,并且添加、删除和查找操作的时间复杂度为O(1)。使用std::unordered_set可以快速地判断一个元素是否已经存在。

下面是一个使用std::unordered_set的例子:


#include <iostream>

#include <unordered_set>

using namespace std;

int main()

{

  unordered_set<int> s;

  s.insert(1);

  s.insert(2);

  s.insert(3);

  if(s.find(1) != s.end())

  

    cout << "1 is in the set" << endl;

  

  if(s.find(4) == s.end())

  

    cout << "4 is not in the set" << endl;

  

  s.insert(1); // 添加重复元素

  unordered_set<int>::iterator it;

  for(it=s.begin(); it!=s.end(); ++it)

  {

    cout << *it << " ";

  }

  return 0;

}

输出结果:1 3 2

可以看到,在第9行和第13行分别使用了find()函数来查找元素是否存在,并分别输出了相应的信息。另外,使用s.insert(1)添加了一个重复元素,但是输出结果中仍然只有一个1。

综上所述,使用std::set、std::map和std::unordered_set都可以防止重复数据出现,具体使用哪种取决于具体的需求和情况。使用这些容器可以使程序更加简洁、高效和稳定。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复