C++ 集合数组

C++ 集合数组

数组被定义为以连续方式存储的数据项的集合。数组存储相同类型的不同变量。由于它们存储在连续位置,因此更容易访问这些变量。

例如

C++ 集合数组

这是一个包含六个元素的数组。假设数组的名称是arr[]。现在,如果我们想要访问这些元素,它们可以访问到0到n-1的索引。这里,n是数组的大小。

Arr[0] = 10

Arr[1] = 20

Arr[2] = 30

Arr[3] = 40

Arr[4] = 50

Arr[5] = 60

集合

集合是一种关联容器,其中的元素是唯一的。与数组不同,添加到集合中的值在添加后不能修改。然而,如果我们想要更新集合中的值,我们可以先删除它,然后再输入修改后的值。

语法

set<data_type> variable_name

示例

set<int> s —– 一组整数值的集合

set<char> c —- 一组字符值的集合

集合的数组

当我们说一个集合的数组时,它是一个具有固定行数的二维数组。每一行可以有可变长度。

在集合的数组中,每个数组索引存储一个集合。可以通过迭代器访问该集合。

C++ 集合数组

set<data_type> variable_name[size_of_array]

示例

set<int> s[3] —-> 大小为3的整型set数组

插入操作在set数组中

插入操作使用insert()函数,因为每一行都是一个set。所以我们使用set数组进行插入操作,使用以下方法 –

set_variable[行号].insert(元素)

示例

s[0].insert(10) —-> 在第1行插入10

s[1].insert(20)—-> 在第2行插入20

代码

#include 
using namespace std;
#define ROW 3
#define COL 4

int main()
{

    set s[ROW]; // Create an array of sets

    int num = 10; // Initial element to be inserted

    for (int i = 0; i < ROW; i++) { // iterate in row
        // Insert the column elements
        for (int j = 0; j < COL; j++) {
            s[i].insert(num);
            num += 10;
        }
    }

    // Display the array of sets
    for (int i = 0; i < ROW; i++) {
        cout << "Row " << i + 1 << " = "
             << "Elements at index " << i << ": ";

        // Print the array of sets
        for (auto x : s[i])
            cout << x << " ";

        cout << endl;
    }

    return 0;
}

输出

Row 1 = Elements at index 0: 10 20 30 40 
Row 2 = Elements at index 1: 50 60 70 80 
Row 3 = Elements at index 2: 90 100 110 120 

在一个集合数组中的删除操作

当我们说在这里删除元素时,我们是从集合中移除该元素。从集合中移除元素的函数是 erase()

代码

在这个示例中,我们从集合3中移除了一个元素,从集合2中移除了一个元素。记住,集合索引是i-1,因为数组索引从0开始。

#include 
using namespace std;

// Fixing rows and column
#define ROW 3
#define COL 4

int main()
{
    set s[ROW]; // Create array of set
    int num = 10;

    // Put elements in the set at a increment of 10
    for (int i = 0; i < ROW; i++) {

        // insert the column elements
        for (int j = 0; j < COL; j++) {
            s[i].insert(num);
            num += 10;
        }
    }

    cout << "Before removal elements are:"
         << endl;

    // Print elements after insertion
    for (int i = 0; i < ROW; i++) {
        cout << "Elements at index "
             << i << ": ";
        for (auto x : s[i])
            cout << x << " ";
        cout << endl;
    }

    s[2].erase(100); // Erase 100 from row 3 which means set 3

    s[1].erase(50); // Erase 50 from row 2 which means set 2

    cout << endl
         << "After removal elements are:" << endl;

    for (int i = 0; i < ROW; i++) {
        cout << "Elements at index " << i << ": ";

        // Print the current set
        for (auto x : s[i])
            cout << x << " ";

        cout << endl;
    }

    return 0;
}

输出

Before removal elements are:
Elements at index 0: 10 20 30 40 
Elements at index 1: 50 60 70 80 
Elements at index 2: 90 100 110 120 

After removal elements are:
Elements at index 0: 10 20 30 40 
Elements at index 1: 60 70 80 
Elements at index 2: 90 110 120 

在数组集合中进行遍历操作

当我们遍历数组集合时,我们会通过每个集合迭代并打印出该集合中的所有元素。迭代器用于遍历集合元素。

代码

在下面的示例中,我们创建一个有两行的数组集合。第一行的集合中有三个元素,第二行的集合中有两个元素。

要遍历数组集合,我们运行一个外部循环来处理行。在内部循环中,我们使用迭代器来打印每个集合。

#include 
using namespace std;
#define ROW 2 // Making a set of 2 rows
int main()
{

    set s[ROW]; // create an array of sets with 2 rows

    // Insertion in row 1
    s[0].insert(10); // insertion in column 1
    s[0].insert(15); // insertion in column 2
    s[0].insert(35); // insertion in column 3

    // Insertion in row 2
    s[1].insert(20); // insertion in column 1
    s[1].insert(30); // insertion in column 2

    // Traversal in array of sets
    for (int i = 0; i < ROW; i++) { // Iterate in the row
        cout << "Elements at index " << i << ": ";
        // Now we have to Iterate in the set of a particular row
        // So use an Iterate that runs from begin of set to end of that set
        for (auto it = s[i].begin(); it != s[i].end(); it++) {

            // Print the set value

            cout << *it << ' ';
        }

        cout << endl;
    }

    return 0;
}

输出

Elements at index 0: 10 15 35 
Elements at index 1: 20 30 

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程