Tag: 向量

如何更改C ++ STL向量的特定元素

vector<int> l; for(int i=1;i<=10;i++){ l.push_back(i); } 现在,例如, 如何将vector的5th element更改为-1 ? 我试过l.assign(4, -1); 这不像预期的那样。 没有其他的vector方法似乎适合。 我使用了vector,因为我需要在我的代码中使用随机访问function(使用l.at(i) )。

如何使vector元素独特? (删除不相邻的重复项)

我有一个载体,包含less数不相邻的重复项。 作为一个简单的例子,考虑: 2 1 6 1 4 6 2 1 1 我试图通过删除不相邻的重复项和维护元素的顺序使这个vector唯一。 结果将是: 2 1 6 4 我尝试的解决scheme是: 插入一个std ::集合,但这种方法的问题是,它会扰乱元素的顺序。 使用std :: sort和std :: unique的组合。 但是同样的顺序问题。 手动重复消除: Define a temporary vector TempVector. for (each element in a vector) { if (the element does not exists in TempVector) { add to TempVector; } } swap orginial […]

R:删除vector的最后一个元素

我怎样才能删除动物园系列的最后100个元素? 我知道这个名字[-element]符号,但是我不能完成这个工作来减less一个完整的部分

C ++ 11允许vector <const T>吗?

容器需求已经从C ++ 03改为C ++ 11。 虽然C ++ 03具有一揽子要求(例如,向量的复制可构造性和可分配性),但是C ++ 11在每个容器操作(第23.2节)上定义了细粒度的要求。 因此,只要你只执行某些不需要赋值的操作,就可以将一个可复制但不能赋值的types(比如带有const成员的结构)存储在一个向量中(构造和push_back就是这样的操作; insert不)。 我想知道的是:这是否意味着标准现在允许vector<const T> ? 我没有看到任何理由不应该 – const T ,就像一个具有const成员的结构,是一个复制可构造但不可转让的types – 但我可能错过了一些东西。 (使我想我可能错过了一些东西的部分原因是,如果尝试实例化vector<const T> ,gcc trunk将崩溃并烧毁,但对于T有const成员的vector<T>则没有问题。

将vector追加到vector的最佳方法

std::vector<int> a; std::vector<int> b; std::vector<int> c; 我想通过将b和c的元素附加到b来连接这三个向量。 这是最好的方法,为什么? 1)通过使用vector::insert : a.reserve(a.size() + b.size() + c.size()); a.insert(a.end(), b.begin(), b.end()); a.insert(a.end(), c.begin(), c.end()); b.clear(); c.clear(); 2)通过使用std::copy : a.reserve(a.size() + b.size() + c.size()); std::copy(b.begin(), b.end(), std::inserter(a, a.end())); std::copy(c.begin(), c.end(), std::inserter(a, a.end())); b.clear(); c.clear(); 3)通过使用std::move (从C++11 ): a.reserve(a.size() + b.size() + c.size()); std::move(b.begin(), b.end(), std::inserter(a, a.end())); std::move(c.begin(), c.end(), std::inserter(a, […]

数组vsvectorvs列表

我正在维护一个固定长度的10个条目表。 每个项目是像4个领域的结构。 将会有数字位置指定的插入,更新和删除操作。 我想知道哪个是最好的数据结构来维护这个信息表: 数组 – 插入/删除由于移位需要线性时间; 更新需要一定的时间; 没有空间用于指针; 使用[]访问项目更快。 stl向量 – 插入/删除由于移位需要线性时间; 更新需要一定的时间; 没有空间用于指针; 访问一个项目比数组慢,因为它是对operator []和一个链表的调用。 stl list – 插入和删除需要线性时间,因为在应用插入/删除之前需要迭代到特定位置; 指针需要额外的空间; 访问一个项目比一个数组慢,因为它是一个链表的线性遍历。 现在,我的select是使用一个数组。 这是合理的吗? 还是我错过了什么? 哪一个更快:遍历一个列表,然后插入一个节点或将项目移动到一个数组中以产生一个空的位置,然后将该项目插入该位置? 衡量这种performance的最好方法是什么? 我可以在操作前后显示时间戳吗?

将调用std :: vector :: clear()将std :: vector :: capacity()设置为零?

如果我在向量上使用.reserve(条目),向量将分配足够的内存来猜测我需要的项目数量。 如果我以后使用.clear(),那么只是清除vector或保存我之前定义的储备? 谢谢。

如何将多个int一次传入vector?

目前,我必须多次使用vector.push_back() 。 我目前使用的代码是 std::vector<int> TestVector; TestVector.push_back(2); TestVector.push_back(5); TestVector.push_back(8); TestVector.push_back(11); TestVector.push_back(14); 有没有办法只使用vector.push_back()一次,只是将多个值传入向量?

从c ++ std :: vector中删除所有项目

我想通过使用下面的代码从std::vector删除一切 vector.erase( vector.begin(), vector.end() ); 但它不起作用。 更新:不清除破坏vector的元素? 我不想要那个,因为我还在使用这些对象,我只想清空容器

sorting结构向量

我有一个vector<data> info其中data定义为: struct data{ string word; int number; }; 我需要根据string的长度对info进行sorting。 有没有一个快速简单的方法来做到这一点?