gpt4 book ai didi

c++ - 在 Windows 上运行但不在 Linux 上运行的迭代器

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:19:48 25 4
gpt4 key购买 nike

我目前正在编写模板矩阵。它包含一个 vector<vector<T>>称为 mat 和 cols 以及包含行数和列数的 rows vals。我试图构建一个迭代器,但发现我无法为 vector of vector 构建迭代器函数。因为我的其余代码已经写好了,所以我添加了一个 matrixToVector 函数,它将我的 vector<vector<T>>vector<T> (我知道这不是最好的选择,但它只是为了大学练习)。在我的 windows 笔记本电脑上 tuns 很好,但在 linux 计算机实验室上,迭代器的前两个数字总是一个非常大的随机数,然后是 0,然后其余数字都很好。这是代码:

    /**
* turns the 2d mat vecor to 1d vector.
*/
vector<T> matrixToVector()
{
vector<T> v;
for(unsigned int i = 0 ; i < rowsNum; i++)
{
for(unsigned int j = 0; j < colsNum; j++)
{
v.push_back(mat[i][j]);
}
}
return v;

}

/**
* iterator
*/
typedef typename std::vector<T>::const_iterator const_iterator;


/**
* return the end of the iterator.
*/
const_iterator end()
{
return matrixToVector().end();
}

/**
* return the begining of the iterator.
*/
const_iterator begin()
{
return matrixToVector().begin();
}

我不知道哪里出了问题。我应该怎么办?

编辑:当我使用常规打印功能打印矩阵时,它在 Linux 和 Windows 上运行良好。

最佳答案

const_iterator begin()
{
return matrixToVector().begin();
}

您返回对堆栈上对象的引用,matrixToVector() 的结果创建临时对象,该对象将在从 begin 返回后销毁

关于c++ - 在 Windows 上运行但不在 Linux 上运行的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33788936/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com