我有一个二维数组,比如说A[2][3]={{1,2,3},{4,5,6}};,我想将其推入二维向量(向量的向量)中。我知道您可以使用两个for loops将元素逐个推入第一个向量,然后将其推入另一个向量,使其成为2d向量,但是我想知道C ++是否有任何方法可以在单个循环中执行此操作。例如,我想做这样的事情:
myvector.pushback(A[1]+3); // where 3 is the size or number of columns in the array.
Run Code Online (Sandbox Code Playgroud)
我了解这不是正确的代码,但我只是出于理解目的而放置了它。谢谢
小智 5
新的 C++0x 标准定义initializer_lists了允许您:
vector<vector<int>> myvector = {{1,2,3},{4,5,6}};
Run Code Online (Sandbox Code Playgroud)
gcc 4.3+ 和其他一些编译器有部分 C++0x 支持。对于 gcc 4.3+,您可以通过添加标志来启用 c++0x 支持-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());
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
29070 次 |
| 最近记录: |