我尝试从数组初始化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
编辑:我已经发现了问题。它与我在此问题中发布的代码无关。
答案 0 :(得分:2)
这是您发布的内容的等效代码,它只使用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::
前缀:)