从数组构造向量
constructing the vector from an array
我尝试从数组初始化std::vector
,但向量包含零,尽管数组已正确初始化。
法典:
lbfgsfloatval_t * k_array = new lbfgsfloatval_t[100];
for(int i = 0; i < 100; i++)
k_array[i] = (lbfgsfloatval_t)i;
vector<lbfgsfloatval_t> k_vector(k_array, k_array+100);
cout << k_array[0] << " " << k_array[1] << " " << k_array[99] << endl;
cout << k_vector[0] << " "<< k_vector[1] << " "<< k_vector[99] << endl;
其中lbfgsfloatval_t
作为double
或float
工作。
输出:
0 1 99
0 0 0
编辑:我已经发现了问题。它与我在这个问题中发布的代码无关。
这是与您发布的代码等效的代码,它只是使用 int
代替:
#include <iostream>
#include <vector>
int main()
{
int * arr = new int[100];
for(int i = 0; i < 100; i++)
arr[i] = (int)i;
std::vector<int> vec(arr, arr+100);
std::cout << arr[0] << " " << arr[1] << " " << arr[99] << std::endl;
std::cout << vec[0] << " " << vec[1] << " " << vec[99] << std::endl;
}
其中输出:
0 1 99
0 1 99
因此,您遇到的问题不是由从数组构造向量引起的。您应该使用一些体面的调试器逐步浏览代码,以了解运行时发生的情况。
另请注意,全局范围内的using namespace std;
是一种不好的做法,通常最好坚持使用std::
前缀而不是:)
相关文章:
- 如何在向量数组中插入元素?
- 不同大小的向量数组的大小 cpp
- 很好的语法来获取对向量/数组数据的大小引用?
- 指向 c++ 中的向量数组并将其发送到函数的指针
- 初始化向量数组,其中每个向量的大小为 0
- 在这里,当我们比较 if(vc[i]==vc1[i]) 时,它是向量数组. 实际上比较的值是多少,
- 如何使用结构体的向量数组?
- C++:向量数组
- 在C++中通过引用传递向量数组
- 向量数组"Cannot access memory at address"
- 构造不同类型的C++向量数组
- 向量数组的均值和众数 - 如何对函数进行较小的改进
- C++:初始化(新)一个不同初始大小的向量数组
- 五个中三个最大参数的平均值,不使用排序算法或向量/数组
- 销毁C++中的向量数组
- 继承向量/数组/列表并更改其大小
- 如何输出属于向量数组的结构字符串
- 如何通过引用传递向量数组
- 在向量数组中获得前五个最大的结果
- 为什么"new vector<int>[5]"不创建向量数组?