C++ 按顺序C和x2B逐个插入+;
我有一个未排序的数组列表,我想将这个数组逐个插入到我的自定义数据结构中。当我创建插入函数时,它按顺序插入 测试arr为{9,10,7,8,5,6,3,4,1,2}C++ 按顺序C和x2B逐个插入+;,c++,visual-c++,C++,Visual C++,我有一个未排序的数组列表,我想将这个数组逐个插入到我的自定义数据结构中。当我创建插入函数时,它按顺序插入 测试arr为{9,10,7,8,5,6,3,4,1,2} 插入{1,3,5,7,9,10,8,6,4,2}后的列表 我的插入功能块 void insert(value_type d) { if (data.size() == 0) { data.push_back(d); } else if (data.size() > 0) { // get
插入{1,3,5,7,9,10,8,6,4,2}后的列表
我的插入功能块
void insert(value_type d)
{
if (data.size() == 0)
{
data.push_back(d);
}
else if (data.size() > 0)
{
// get data begin
//std::list<value_type>::iterator iter = data.begin();
for (auto iter = data.begin(); iter != data.end();++iter)
{
if(d > *iter)
{
data.push_back(d);
break;
}
else if (d <= *iter)
{
data.insert(iter,d);
break;
}
}
}
}
void插入(值\u类型d)
{
if(data.size()==0)
{
数据。推回(d);
}
else if(data.size()>0)
{
//开始获取数据
//std::list::iterator iter=data.begin();
对于(自动iter=data.begin();iter!=data.end();++iter)
{
如果(d>*iter)
{
数据。推回(d);
打破
}
否则,如果(d则显示您正在尝试执行插入排序的插入。标准库已介绍:
查找新元素在O(logn)中的位置-上界是二进制搜索:
var pos = std::upper_bound(data.begin(), data.end(), d);
在此处插入元素:
data.insert(pos, d);
甚至作为你整个功能的一行
data.insert(std::upper_bound(data.begin(), data.end(), d), d);
看起来你正试图通过线性搜索按顺序插入它们。这就是你想要做的吗?@MooingDuck这就是我想要做的吗?