首页 > TAG信息列表 > stdvector

c++学习笔记(三十一)stdvector动态数组

        我们今天只说他是怎么使用的,创建和具体函数我先列出给各位 一、创建向量 Vector<类型>标识符 Vector<类型>标识符(最大容量) Vector<类型>标识符(最大容量,初始所有值) int i[5]={1,2,3,4,5}; Vector<类型>vi(I,i+2);//得到i索引值为3以后的值 Vector< vector< int>

C中的向量初始化

我在代码中使用Vectors. 导致错误的行如下: vector<Node> alt_seq ; alt_seq = vector<Node>(1000); for(int j=0; j<alt_cf.getNoOfNodes(i); j++) { Node temp_node = *alt_itr; alt_itr++; alt_seq.push_back(temp_node); } 该行: alt_seq.push_back(tem

c-自动检查std :: vector中的界限

这个问题已经在这里有了答案:            >            Compile time triggered range check for std::vector                                    2个 在积极开发使用std :: vector的类的过程中,经常会发生索引超出

c-将std :: map复制到对的std :: vector中

我正在尝试将地图复制到向量对中,因此可以根据向量对中的第二个数据成员对向量进行排序.我已经这样解决了: void mappedWordsListSorter(){ for (auto itr = mappedWordsList.begin(); itr != mappedWordsList.end(); ++itr){ vectorWordsList.push_back(*itr); } sort(v

c – 使用其他类方法的std :: remove_if

我想使用std :: remove_if和一个谓词,它是一个不同的calss的成员函数. 那是 class B; class A { bool invalidB( const B& b ) const; // use members of class A to verify that B is invalid void someMethod() ; }; 现在,实现A :: someMethod,我有 void A::someMeth

c – 使用std :: make_unique的push_back或emplace_back

根据these questions here中的答案,我知道使用c 14的std :: make_unique肯定比使用emplace_back(new X)更直接. 那就是说,打电话是首选 my_vector.push_back(std::make_unique<Foo>("constructor", "args")); 要么 my_vector.emplace_back(std::make_unique<Foo>("con

c – 在插入时保持std向量/列表排序,或者对所有进行排序

假设我的矢量/列表中有30000个对象.我逐一添加. 我需要他们排序.是否更快一次排序(如std :: sort),或者在逐个添加对象时保持向量/列表的排序? 向量/列表以后不会被修改.解决方法:如果在逐个插入元素时保持向量列表排序,则基本上执行插入排序,理论上在最坏的情况下运行O(n ^ 2).平均

c – std :: vector的类型要求

我仍然对在C 11中与std :: vector一起使用的类型的要求感到困惑,但这可能是由错误的编译器(gcc 4.7.0)引起的.这段代码: struct A { A() : X(0) { std::cerr<<" A::A(); this="<<this<<'\n'; } int X; }; int main() { std::vector<A> a; a.resize(4); } 工作正常

如何使用st#:: vector作为C#参数调用非托管C函数?

出于性能原因,我有一个C#前端和一个C后端. 现在我想调用一个C函数,例如: void findNeighbors(Point p, std::vector<Point> &neighbors, double maxDist); 我想要的是一个C#包装函数,如: List<Point> FindNeigbors(Point p, double maxDist); 我可以将像Point []这样的平面数组传

c – 对于const成员,如何在没有operator =()的情况下使用push_back?

如何将push_back()转换为C std :: vector而不使用默认定义违反const成员的operator =()? struct Item { Item(int value) : _value(value) { } const char _value; } vector<Item> items; items.push_back(Item(3)); 我想保留_value const,因为它在构造对象后不应该改

c – 如何便宜地将C风格的数组分配给std :: vector?

目前我做以下事情: // float *c_array = new float[1024]; void Foo::foo(float *c_array, size_t c_array_size) { //std::vector<float> cpp_array; cpp_array.assign(c_array, c_array + c_array_size); delete [] c_array; } 如何优化此分配?我不想执行元素复制,只是交

c – 具有不同签名的std :: function的向量

我有许多具有不同签名的回调函数.理想情况下,我想将它们放在一个向量中,并根据某些条件调用适当的一个. 例如 void func1(const std::string& value); void func2(const std::string& value, int min, int max); const std::vector<std::function<void(std::string)>> functions

c – 对象指针矢量,初始化

我对C还不是很有经验,所以如果这是基本的东西,请耐心等待. 我有一些类似下面的代码. L是一个抽象类(它有许多纯虚函数),A,B和C是从L派生的常规类.可能有任何数量的这些,它们都是不同的. int main() { // ... std::vector<L*> ls(3) ; ls[0] = new A ; ls[1] =

c – 结构矢量值意外变化

我有一个奇怪的问题.有一个结构向量.使用临时结构,我push_back到结构向量.但是当我检查第一个成员的cnt时,我发现它变了.任何的想法? (下面的代码是简化版,但代表性的一个) struct Vector { float *dim; Vector () { dim = new float [3]; } }; struct Face { floa

c在3D矢量上的最快循环扫描

我想知道在3D矢量的每个元素上执行方法的最快方法是什么. 假设我们有: std::vector<vector<vector<CLS>>> myVec; 我想以最快的方式执行以下循环: for(int cycle=0;cycle<10;cycle++) // do it 10 times { for(int i=0;i<myVec.size();i++) { for(int j=0;j<myVe

c – 如何重载自定义std :: sort比较函数?

使用std :: sort时,如何重载我正在使用的自定义比较函数? #include <string> #include <vector> #include <iostream> #include <algorithm> class Misc { public: // Comment out the next three lines to compile without problems. static bool sortPair(const s

我可以在c中使用可变修改的向量吗?

有没有办法做到这一点: std::vector<char[foo]> bar; 我需要一个连续的char [foo]数组,但直到运行时我才知道它的长度.我需要能够动态添加char [foo]块. 我需要内部数组完全正确的大小,所以如果foo是3: [[1,2,3] [4,5,6] …… [x,y,z]] 我可以自己实现,但不想重新发明轮子.解决方法

c – 访问std :: vector容器中的数据

我有三个std :: vector. typedef std::pair< double,double > A; typedef std::vector< A > B; typedef std::vector< B > C; 我知道如何访问B里面的元素 B b; b.at(0).first; b.at(0).second; And C c; 如何使用容器变量c访问b的元素? 谢谢解决方法:C.at(0).at(0)将访问B的第一

c – 如何通过引用正确传递迭代器?

我有一个游戏,我检查子弹和敌人之间的碰撞,我存储为2个矢量容器.人们说如果你要删除for循环中的元素,你最好使用迭代器,所以我做了.但我现在有一个问题,即将迭代器传递给函数.问题是我不一定需要擦除元素,所以它必须更复杂一些. 这是我检查碰撞的方式. “CircularCollision”工作正

c – 将memcpy放入原始内存位置的向量中

我正在使用一个API,它在内存中提供了感兴趣的字符串的内存地址和长度.我想把这些字符串读成更友好的对象,比如wstring. 对于较小的字符串,使用以下代码可以很好地使用静态大小的缓冲区: // This code works (but may have other issues) // _stringLengthOffset and _bufferOffset

c – STD :: Vector-直接写入内部数组

以下代码是否正常?: std::vector<char> var; size_t requiredSize; getenv_s(&requiredSize, NULL, 0, "Something"); if (requiredSize == 0) { return ENV_NOT_EXIST; } if(var.size() < requiredSize) var.resize(requiredSize); // Get the valu

c – 破坏存储在指针向量中的对象[复制]

参见英文答案 > Does std::list::remove method call destructor of each removed element?                                    6个 我有一个包含指针的类,该类不会继承任何内容 class MyClass { public: MyClass(); ~MyClass(); private:

c – 基于范围的for循环和std :: vector:按顺序处理的元素是什么?

我使用的是std :: vector,其中第一个元素是某种特殊的,并且需要与其他元素稍微不同的处理. 我想使用基于C 11范围的for循环以获得更多可读性,以下代码是否正确且在这种情况下的良好实践? std::vector<T> v; // [...] build v bool isFirst = true; for(auto element : v) {

c – std :: vector的概念和GCC实现

让我们尝试创建一个类似指针的类型匹配 都是RandomAccessIterator和NullablePointer的概念.这里的目标是创建自定义Allocator为了使用std :: vector和我们类似指针的类型.你可以找到here的代码片段 尝试编译此代码时出现问题: int main() { std::vector<float, allocator<floa

c – 将std :: vector截断为长度N的有效方法 – 释放内存

我有几个chad的大型std ::向量(从二进制文件加载的字节). 当我的程序内存不足时,我需要能够剔除这些向量使用的一些内存.这些向量几乎是我内存使用的全部内容,它们只是本地和网络文件的缓存,所以只抓住最大的一个并将其切成两半左右是安全的. 唯一的问题是,我目前正在使用vector ::