首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >向量向量C ++

向量向量C ++
EN

Stack Overflow用户
提问于 2017-02-22 05:23:01
回答 2查看 387关注 0票数 0

向量向量C ++ Hi,我不懂嵌套向量的语法来模拟数组,我有下面的代码。

代码语言:javascript
复制
vector< vector< float> > myvector (n, vector < float> (2));

但我不太明白它是如何工作的,尤其是当你指定向量的大小和它中的向量时,如果你想调整向量的大小,使我的向量具有指定的维数,我如何调整内部向量的大小?类似于将vec [10] [2]更改为vec [10] [5] (更改第二维度)

除了如何使用多维向量复制外,类似于:

代码语言:javascript
复制
vector< int> myvector (myVectorToCopy, myVectorToCopy+myVectorToCopy.size()); 

但是有几个维度。谢谢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2017-02-22 05:50:29

vector<vector<float>>意味着您正在创建一个包含浮动向量的向量。构造函数参数意味着要创建一个大小为n的向量,其中向量的每个元素都是大小为2的浮点数的向量。

调整vector<vector<float>>的大小

代码语言:javascript
复制
for (int i = 0; i < n; ++i)
    A[i].resize(newSize);

或者,您可以使用:

代码语言:javascript
复制
A.assign(n,vector<float>(newSize));

若要复制多维向量,请使用构造函数:

代码语言:javascript
复制
vector<vector<float>> B(A);
票数 2
EN

Stack Overflow用户

发布于 2017-02-22 05:42:24

如果您填充向量并尝试向其添加更多内容,C++中的向量将自动调整大小。如果您知道矢量的确切大小,我建议切换到std::array,但是您将失去在运行时调整它们大小的能力。

std::vector::operator[]有一个重载来返回用于创建模板的T的引用(在您的例子中,Tstd::vector,嵌套的)。如果您知道外部向量中的索引,您可以这样做:

代码语言:javascript
复制
myVec[0].resize(5);

这将调整嵌套向量在位置0到5个元素的大小。

复制与访问以下内容非常相似:

代码语言:javascript
复制
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

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

https://stackoverflow.com/questions/42383320

复制
相关文章

相似问题

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