向量向量C ++ Hi,我不懂嵌套向量的语法来模拟数组,我有下面的代码。
vector< vector< float> > myvector (n, vector < float> (2));但我不太明白它是如何工作的,尤其是当你指定向量的大小和它中的向量时,如果你想调整向量的大小,使我的向量具有指定的维数,我如何调整内部向量的大小?类似于将vec [10] [2]更改为vec [10] [5] (更改第二维度)
除了如何使用多维向量复制外,类似于:
vector< int> myvector (myVectorToCopy, myVectorToCopy+myVectorToCopy.size()); 但是有几个维度。谢谢。
发布于 2017-02-22 05:50:29
vector<vector<float>>意味着您正在创建一个包含浮动向量的向量。构造函数参数意味着要创建一个大小为n的向量,其中向量的每个元素都是大小为2的浮点数的向量。
调整vector<vector<float>>的大小
for (int i = 0; i < n; ++i)
A[i].resize(newSize);或者,您可以使用:
A.assign(n,vector<float>(newSize));若要复制多维向量,请使用构造函数:
vector<vector<float>> B(A);发布于 2017-02-22 05:42:24
如果您填充向量并尝试向其添加更多内容,C++中的向量将自动调整大小。如果您知道矢量的确切大小,我建议切换到std::array,但是您将失去在运行时调整它们大小的能力。
std::vector::operator[]有一个重载来返回用于创建模板的T的引用(在您的例子中,T是std::vector,嵌套的)。如果您知道外部向量中的索引,您可以这样做:
myVec[0].resize(5);这将调整嵌套向量在位置0到5个元素的大小。
复制与访问以下内容非常相似:
std::copy(std::begin(VecToCopy), std::end(VecToCopy), std::begin(VecToFill));最后一次使用std::begin可能不是您想要的,但这只是一个例子。
http://en.cppreference.com/w/cpp/algorithm/copy
http://en.cppreference.com/w/cpp/container/array
https://stackoverflow.com/questions/42383320
复制相似问题