Update some queue code since deques support random access
This commit is contained in:
parent
d6e01d0c55
commit
d209e7533a
|
|
@ -591,22 +591,7 @@ void vvp_queue_real::insert(unsigned idx, double value, unsigned max_size)
|
||||||
<< max_size << "]." << endl;
|
<< max_size << "]." << endl;
|
||||||
queue.pop_back();
|
queue.pop_back();
|
||||||
}
|
}
|
||||||
// Inserting at the beginning
|
queue.insert(queue.begin()+idx, value);
|
||||||
if (idx == 0)
|
|
||||||
queue.push_front(value);
|
|
||||||
// Inserting in the middle
|
|
||||||
else {
|
|
||||||
std::deque<double>::iterator pos;
|
|
||||||
unsigned middle = queue.size()/2;
|
|
||||||
if (idx < middle) {
|
|
||||||
pos = queue.begin();
|
|
||||||
for (unsigned count = 0; count < idx; ++count) ++pos;
|
|
||||||
} else {
|
|
||||||
pos = queue.end();
|
|
||||||
for (unsigned count = queue.size(); count > idx; --count) --pos;
|
|
||||||
}
|
|
||||||
queue.insert(pos, value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -635,17 +620,8 @@ void vvp_queue_real::push_front(double value, unsigned max_size)
|
||||||
|
|
||||||
void vvp_queue_real::erase(unsigned idx)
|
void vvp_queue_real::erase(unsigned idx)
|
||||||
{
|
{
|
||||||
std::deque<double>::iterator pos;
|
assert(queue.size() > idx);
|
||||||
unsigned middle = queue.size()/2;
|
queue.erase(queue.begin()+idx);
|
||||||
if (idx < middle) {
|
|
||||||
pos = queue.begin();
|
|
||||||
for (unsigned count = 0; count < idx; ++count) ++pos;
|
|
||||||
} else {
|
|
||||||
pos = queue.end();
|
|
||||||
for (unsigned count = queue.size(); count > idx; --count) --pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
queue.erase(pos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void vvp_queue_real::erase_tail(unsigned idx)
|
void vvp_queue_real::erase_tail(unsigned idx)
|
||||||
|
|
@ -727,22 +703,7 @@ void vvp_queue_string::insert(unsigned idx, const string&value, unsigned max_siz
|
||||||
<< max_size << "]." << endl;
|
<< max_size << "]." << endl;
|
||||||
queue.pop_back();
|
queue.pop_back();
|
||||||
}
|
}
|
||||||
// Inserting at the beginning
|
queue.insert(queue.begin()+idx, value);
|
||||||
if (idx == 0)
|
|
||||||
queue.push_front(value);
|
|
||||||
// Inserting in the middle
|
|
||||||
else {
|
|
||||||
std::deque<string>::iterator pos;
|
|
||||||
unsigned middle = queue.size()/2;
|
|
||||||
if (idx < middle) {
|
|
||||||
pos = queue.begin();
|
|
||||||
for (unsigned count = 0; count < idx; ++count) ++pos;
|
|
||||||
} else {
|
|
||||||
pos = queue.end();
|
|
||||||
for (unsigned count = queue.size(); count > idx; --count) --pos;
|
|
||||||
}
|
|
||||||
queue.insert(pos, value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -771,17 +732,8 @@ void vvp_queue_string::push_front(const string&value, unsigned max_size)
|
||||||
|
|
||||||
void vvp_queue_string::erase(unsigned idx)
|
void vvp_queue_string::erase(unsigned idx)
|
||||||
{
|
{
|
||||||
std::deque<std::string>::iterator pos;
|
assert(queue.size() > idx);
|
||||||
unsigned middle = queue.size()/2;
|
queue.erase(queue.begin()+idx);
|
||||||
if (idx < middle) {
|
|
||||||
pos = queue.begin();
|
|
||||||
for (unsigned count = 0; count < idx; ++count) ++pos;
|
|
||||||
} else {
|
|
||||||
pos = queue.end();
|
|
||||||
for (unsigned count = queue.size(); count > idx; --count) --pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
queue.erase(pos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void vvp_queue_string::erase_tail(unsigned idx)
|
void vvp_queue_string::erase_tail(unsigned idx)
|
||||||
|
|
@ -863,22 +815,7 @@ void vvp_queue_vec4::insert(unsigned idx, const vvp_vector4_t&value, unsigned ma
|
||||||
<< value.size() << "]> [" << max_size << "]." << endl;
|
<< value.size() << "]> [" << max_size << "]." << endl;
|
||||||
queue.pop_back();
|
queue.pop_back();
|
||||||
}
|
}
|
||||||
// Inserting at the beginning
|
queue.insert(queue.begin()+idx, value);
|
||||||
if (idx == 0)
|
|
||||||
queue.push_front(value);
|
|
||||||
// Inserting in the middle
|
|
||||||
else {
|
|
||||||
std::deque<vvp_vector4_t>::iterator pos;
|
|
||||||
unsigned middle = queue.size()/2;
|
|
||||||
if (idx < middle) {
|
|
||||||
pos = queue.begin();
|
|
||||||
for (unsigned count = 0; count < idx; ++count) ++pos;
|
|
||||||
} else {
|
|
||||||
pos = queue.end();
|
|
||||||
for (unsigned count = queue.size(); count > idx; --count) --pos;
|
|
||||||
}
|
|
||||||
queue.insert(pos, value);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
@ -907,17 +844,8 @@ void vvp_queue_vec4::push_front(const vvp_vector4_t&value, unsigned max_size)
|
||||||
|
|
||||||
void vvp_queue_vec4::erase(unsigned idx)
|
void vvp_queue_vec4::erase(unsigned idx)
|
||||||
{
|
{
|
||||||
std::deque<vvp_vector4_t>::iterator pos;
|
assert(queue.size() > idx);
|
||||||
unsigned middle = queue.size()/2;
|
queue.erase(queue.begin()+idx);
|
||||||
if (idx < middle) {
|
|
||||||
pos = queue.begin();
|
|
||||||
for (unsigned count = 0; count < idx; ++count) ++pos;
|
|
||||||
} else {
|
|
||||||
pos = queue.end();
|
|
||||||
for (unsigned count = queue.size(); count > idx; --count) --pos;
|
|
||||||
}
|
|
||||||
|
|
||||||
queue.erase(pos);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void vvp_queue_vec4::erase_tail(unsigned idx)
|
void vvp_queue_vec4::erase_tail(unsigned idx)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue