首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在<vector<int>>中打印矢量c++?

如何在<vector<int>>中打印矢量c++?
EN

Stack Overflow用户
提问于 2020-09-05 13:35:32
回答 5查看 5.3K关注 0票数 1

我试图动态地分配和打印vector<vector<int>>,但是我想不出怎么做--我被困在这里是我的程序。

代码语言:javascript
复制
#include<iostream>
#include<vector>
#include<string>
using namespace std;
class A {
public:
    vector<int> getVector(int s) {

        vector <int> A(s);
        for (int j = 0; j < s; j++) {
            A.push_back(j);
        }
        return A;
    }
};
int main() {
    A obj;
    int n = 5;
    vector<vector<int>> A;
    
    A.push_back(obj.getVector(n));     // pushes a vector on vector A
    A.push_back(obj.getVector(n - 1));

    vector<vector<int>> ::iterator it;
    it = A.begin();
    for (it; it != A.end(); it++) {
        cout << *it;
    }


    return 0;
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2020-09-05 13:43:04

代码语言:javascript
复制
vector<vector<int>> ::iterator it;
    it = A.begin();
    for (it; it != A.end(); it++) {
        for(vector<int>::iterator it2 = it->begin(); it2 != it->end(); ++it2)
            cout << *it2;
    }
票数 1
EN

Stack Overflow用户

发布于 2020-09-05 13:47:45

考虑向量,就像一个动态的2D数组。

为此您将需要2个循环。

还需要更改一些内容:

  1. vector <int> A(s);将初始化一个大小为s的向量,将所有元素设置为0,然后将第一个n元素推入A。因此,将vector <int> A(s);改为vector <int> A;
  2. using namespace std被认为不是一个好的实践。找出原因。

请查看以下实现:

代码语言:javascript
复制
#include<iostream>
#include<vector>
#include<string>

class A {
    
    public:
        
        std::vector<int> getVector(int s) {

            std::vector <int> A; //Change 1

            for (int j = 0; j < s; j++) {
                A.push_back(j);
            }
            return A;
        }
};

int main() {

    A obj;
    int n = 5;
    std::vector<std::vector<int>> test_vector;
    
    test_vector.push_back(obj.getVector(n));     // pushes a vector on vector A
    test_vector.push_back(obj.getVector(n - 1));

    std::vector<std::vector<int>> :: iterator test_vector_iterator;
    
    test_vector_iterator = test_vector.begin();
    
    for (test_vector_iterator; test_vector_iterator != test_vector.end(); test_vector_iterator++) {
        
        std::vector<int> :: iterator inner_vector_iterator = (*test_vector_iterator).begin();

        for(inner_vector_iterator; inner_vector_iterator != (*test_vector_iterator).end(); inner_vector_iterator++){

            std::cout << *inner_vector_iterator <<" ";
        }

        std::cout << std::endl;
    }


    return 0;
}

输出:

代码语言:javascript
复制
0 1 2 3 4 
0 1 2 3 
票数 3
EN

Stack Overflow用户

发布于 2020-09-05 13:41:24

使用范围循环,如

代码语言:javascript
复制
for( const auto &i : A )      // for elements in A, i is vector<int>
{
    for( const auto &j : i )  // for sub elements in A, j is int
    {
        std::cout<<j;
    }
}

或使用迭代器

代码语言:javascript
复制
for( vector<vector<int>>::iterator i = A.begin() ; i != A.end(); i++ )
{
    for( vector<int>::iterator j = i->begin(); j != i->end(); j++ )
    {
        std::cout<<*j;
    }
}

谢谢。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63754495

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档