c++ - 将数组插入 vector

标签 c++ vector

我有一个二维数组,比如 A[2][3]={{1,2,3},{4,5,6}}; 我想推送它成一个二维 vector ( vector 的 vector )。我知道您可以使用两个 for 循环 将元素一个接一个地推送到第一个 vector ,然后将其推送到另一个 vector ,使其成为二维 vector ,但我想知道是否有任何方法C++ 在单个循环中执行此操作。例如我想做这样的事情:

myvector.pushback(A[1]+3); // where 3 is the size or number of columns in the array.

我知道这不是正确的代码,但我只是为了理解目的而放置它。谢谢

最佳答案

新的 C++0x 标准定义了 initializer_lists,它允许您:

vector<vector<int>> myvector = {{1,2,3},{4,5,6}};

gcc 4.3+ 和一些其他编译器有部分 C++0x 支持。 对于 gcc 4.3+,您可以通过添加标志 -std=c++0x

来启用 c++0x 支持

这不是让您的静态数据像那样表示的最佳方式。但是,如果您的编译器供应商支持 C++ tr1,那么您可以:

#include <tr1/array>  // or #include <array>
...

typedef vector<vector<int> > vector2d;
vector2d myvector;

// initialize the vectors
myvector.push_back(vector<int>());
myvector.push_back(vector<int>());

typedef std::array<std::array<int, 3>, 2> array2d;
array2d array = {{1,2,3},{4,5,6}};
array2d::const_iterator ai = array.begin(), ae = array.end();
for (vector2d::iterator i = myvector.begin(), e = myvector.end()
    ; i != e && ai != ae
    ; i++, a++)
{
    // reserve vector space
    i->reserve(array.size());

    // copy array content to vector
    std::copy(ai.begin(), ai->end(), i->begin());
}

关于c++ - 将数组插入 vector ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4541556/

相关文章:

python - 基准矩阵乘法性能 : C++ (eigen) is much slower than Python

c++ - OpenCV:创建透明蒙版?

Python 中使用矢量嵌入的 Azure 认知搜索错误

c++ - 从 Vector::Vector 基类继承

database - 为 500,000 个用户存储权重对的最佳方式?

c++ - C/C++即时输入

c++ - boost::asio:线程本地异步事件

c++ - 在 boost::d_ary_heap_indirect 中更新优先级

c++ - 打印 vector 成员。错误

c++ - 如何在不丢失现有数据的情况下调整 std::vector 的大小?