我有一个二维数组,比如 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++ 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/