将仅重复的矢量推到一个元素

Push to vector only one element, without repeating

本文关键字:元素 一个      更新时间:2023-10-16

我有一个代码,我应该在其中介绍3个数字和一个多维数组。我应该从数组中打印所有数字,这些数字是从开始的3个数字。

这是我的代码:

#include <vector>
#include <iostream>
using namespace std;
int main() {
    int r, p, k, nr, n, m, counter=0, temp;
    vector <int> numbers;
    cout << "Enter value of r, p, k: ";
    cin >> r >> p >> k;
    cout << "Enter the number of rows and columns: ";
    cin >> n >> m;
    int T[n][m];
    cout << "Enter values: ";
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            cin >> T[i][j];
        }
    }
    for(int i = 0; i < n; i++) {
        for(int j = 0; j < m; j++) {
            for(int a = 0; a < 1; a++) {
                numbers.push_back(T[i][j]);
                counter++;
            }
        }
    }
    for(int f = 0; f < counter; f++) {
        if(r%numbers[f]==0 && p%numbers[f]==0 && k%numbers[f]==0) {
            cout << numbers[f] << ' ';
        }
    }
    return 0;
}

所以,我的问题是..如何推动仅重复1次的向量数。我的意思是,如果在数组中是2相同的数字,请不要打印两个,而只是其中一个。

预先感谢。

使用集合:http://en.cppreference.com/w/cpp/container/set

一组不允许重复。例如,如果您多次插入数字5,则该集合中仍然只有一个5。

第一个#include<set>

然后用set<int> numbers;

替换vector <int> numbers;

然后更换

for(int i = 0; i < n; i++) {
    for(int j = 0; j < m; j++) {
        for(int a = 0; a < 1; a++) {
            numbers.push_back(T[i][j]);
            counter++;
        }
    }
}

for(int i = 0; i < n; i++)
    for(int j = 0; j < m; j++)
        numbers.insert(T[i][j]);

然后更换

for(int f = 0; f < counter; f++) {
     if(r%numbers[f]==0 && p%numbers[f]==0 && k%numbers[f]==0) {
         cout << numbers[f] << ' ';
     }
} 

for (auto i = numbers.cbegin(); i != numbers.cend(); ++i)
    if(r % *i == 0 && p % *i == 0 && k % *i == 0)
        cout << *i << ' ';

应该这样做。您可以从程序中消除计数器变量,因为numbers.size()为您提供了集合中的对象数量。另外,不使用您的温度变量,因此也可以消除。另外,请注意,集合是一个有序的容器,因此像这样打印它将以升序打印数字。

(还请注意,诸如int arr [3]之类的数组的长度必须在编译时知道严格有效的C 。这里3是字面的,因此在编译时已知。要求用户输入阵列的长度表示在编译时不知道它。)

填充向量后,您可以首先对其中的所有元素进行排序,而不是调用std::unique,以从中删除所有重复项。

尝试查看std ::独特和std :: sort

的参考