【发布时间】:2015-05-04 17:14:46
【问题描述】:
我在使用 QVector 时从来没有遇到过这种问题,但不幸的是我不能在这个中使用 qt。我要做的是通过 2 个向量,其中包含点 X 和 Y 作为双精度值。
我正在尝试在预定义的点之间插入一些 x 和 y 点。问题是,在第二个循环之后一切都变糟了,迭代器开始得到奇怪的值,并且这些点一直插入到 0 索引中。这个迭代器真的很令人困惑,我不明白为什么我不能简单地使用整数索引插入到我的向量中。我也尝试了 C++11 的方式,但没有给我任何东西。
m_x 向量以秒为单位表示时间,m_y 向量表示温度。 m_x 是双精度的,但只能取整数正值。
int CProcessData::calculateMidPoints()
{
if((0 == m_x.size()) || (0 == m_y.size()))
return 1;
std::vector<double>::iterator itX = m_x.begin();
std::vector<double>::iterator itY = m_y.begin();
double midPointY = 0;
for (uint32_t i = 0; i < (m_x.size() - 1); i++)
{
if (i != m_x[i])
{
m_x.insert(itX, (double)i);
midPointY = (m_y[i - 1] * 1 + m_y[i] * (1 / (m_x[i + 1] - m_x[i]))) /
(1 + (1 / (m_x[i + 1] - m_x[i])));
m_y.insert(itY, midPointY);
}
else
{
itX++;
itY++;
}
}
return 0;
}
【问题讨论】:
-
用
push_back()代替insert()怎么样? -
我必须在特定点之间插入。
标签: c++ c++11 vector insert iterator