-1

如果我声明

vector< vector <double > > V; 

如何插入(3.0, 4.0)作为第一个元素?

4

4 回答 4

2

您可以使用std::make_pair在向量中插入一对双精度数:

std::vector<std::pair<double, double>> V; 
V.push_back(std::make_pair(3.0, 4.0));
于 2012-12-18T19:12:22.687 回答
2

您不能向该 2d 向量添加 2 个值,该 2d 向量仅在 M x N 个位置存储一个 double 类型的值。

您可以做的是创建一个结构,例如:

struct SPoint
{
  double X;
  double Y;
};

然后添加这样的点:

vector< vector <SPoint > > v; 
SPoint point = {3.0, 3.4};

v.push_back ( std::vector<SPoint >()
v[0].push_back(point); 

希望能帮助到你。

于 2012-12-18T19:16:21.407 回答
1

目前尚不清楚您是将元素插入到预先存在的向量中,还是插入到新的空向量中。无论哪种情况,您都可以根据需要使用std::vector std::initializer_list构造函数进行初始化或赋值:

#include <vector>

int main()
{
  std::vector<std::vector<double>> v1;
  v1.push_back({3.0,4.0}); // push first element using initializer_list

  std::vector<std::vector<double>> v2(10);
  v2[0] = {3.0, 4.0}; // assign value to pre-existing vector

}
于 2012-12-18T19:12:15.450 回答
1

在 C++03 中:

vector<vector<double>> V;
V.push_back(std::vector<double>(2));
V[0][0] = 3.0;
V[0][1] = 4.0;

在 C++11 中:

vector<vector<double>> V; 
V.emplace_back({3.0, 4.0});

相反,如果使用 a std::vectorof std::pairs 更有意义,您可以这样做:

std::vector<std::pair<double, double>> V;
V.push_back({3.0, 4.0});

访问该对中的一个元素看起来像V[0].firstV[1].second

于 2012-12-18T19:13:57.083 回答