【问题标题】:how to fill and return vector of vector of set如何填充和返回集合向量的向量
【发布时间】:2020-10-08 09:46:12
【问题描述】:

我想填充然后返​​回集合向量的向量。换句话说,一个包含一组数字的矩阵。 我声明:

#include<iostream>
#include<set>
#include<vector>

vector<int> row = vector<int>(4);
vector<vector<int>> matrix = vector<vector< int>>(4, row)

如果它是一个向量的向量,我会写
vector&lt;vector&lt;vector&lt;int&gt;&gt;&gt; v = vector&lt;vector&lt;vector&lt;int&gt;&gt;&gt;(4, matrix)。 也许可以为 vec 的集合写 vector&lt;vector&lt;set&lt;int&gt;&gt;&gt; v; 。但我会将set&lt;int&gt; 放入matrix。 这是一个 4x4 矩阵,其中包含 4 个可能的数字。我正在尝试使用 v[i][j].insert(f) 从 0 到 4 迭代 f 来填充从 1 到 4 的数字 v

如何返回打印所有数字的矩阵? 我希望是这样的:

1234123412341234
1234123412341234
1234123412341234
1234123412341234

补充问题

如何访问和删除矩阵元素中的数字? 例如,我想访问第二行和第三列。我有1234,我想删除这 4 个数字中的 3 个。假设我只想在matrix[2][3] 中写1。 我认为它类似于v[2][3].find(1),但我不太确定。

请不要建议我使用其他 stl 容器。 我唯一可以使用的其他 stl 是向量、set 或 map 以及 unordered_set 或 map。

【问题讨论】:

  • This 可能有用。尝试首先声明一个适当的矩阵(如果需要,可以在其中包含集合),然后将它们放在一起,我认为这样会更清楚,你会编写更具可读性的代码

标签: c++ matrix vector stl set


【解决方案1】:

代码可以是这样的:

#include<iostream>
#include<set>
#include<vector>

using namespace std;

int main(){

vector<set<int>> row = vector< set<int> >(4);
vector<vector<set<int>>> matrix = vector<vector< set<int>>>(4, row);

vector< vector< set<int> > >::iterator itCol;

for (itCol = matrix.begin(); itCol != matrix.end(); ++itCol){
    vector<set<int>>::iterator itRow;
    for(itRow = itCol->begin(); itRow != itCol->end(); ++itRow){
        for(int i = 1 ; i <=4; ++i){
                itRow->insert(i);
        }
    }
} 

for (itCol = matrix.begin(); itCol != matrix.end(); ++itCol){
    vector<set<int>>::iterator itRow;
    for(itRow = itCol->begin(); itRow != itCol->end(); ++itRow){
        set<int>::iterator itSet;
        for(itSet = itRow->begin(); itSet != itRow->end(); ++itSet){
                cout << *itSet;
        }
    }
    cout << endl;
} 

};

如果你想删除一个集合中的一些元素,你可以从你想要的集合中使用:

matrix[row][col].erase(matrix[i][j].find(number_you_want));

【讨论】:

  • 不确定我是否理解 for 迭代的第二个周期。是用来做什么的?还有matrix[row][col]matrix[i][j]有什么区别?
  • 第二个循环是按照你的要求打印矩阵
  • 行和列是矩阵的索引
  • 这是另一个太长的答案,请打开另一个问题
  • 好的,没问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-11-09
  • 2013-10-22
  • 1970-01-01
  • 2017-01-07
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多