草庐IT

vector_c

全部标签

c++ - 我可以禁用 std::vector 的复制构造函数吗?

我正在编写包含大量STLvector的代码。我想我已经将它构造成所有引用和移动构造函数,但我想要一种自动化的方式来确定。每当调用复制构造函数时,有什么方法可以得到警告或错误吗?我不想编写自己的vector类,也不想修改STLheader。请不要将编写自己类(class)的人提出的类似问题标记为重复项:我不想那样做。 最佳答案 除了禁用vector中存储的类型的复制构造函数和复制赋值运算符之外,不修改vector源代码,您将无法禁用vector复制。但是,您确实有几个选择。您可以检查您的二进制文件中是否存在vector复制构造函数;如

c++ - 与最大大小相关的数组和 vector 之间的区别?

当我在我的Devcpp编译器中运行这段代码时->#includeusingnamespacestd;intmain(){vectorvec;for(inti=0;i它甚至可以在运行时运行。但是当我运行时->#includeusingnamespacestd;intarr[1000000000];intmain(){return0;}它给我链接错误。只要需要空间,arr和vec都需要相同的空间。那么为什么vec代码在运行时运行得很好,但arr代码甚至无法编译。 最佳答案 问题在于分配。在第一种情况下,std::vector默认allo

c++ - 为什么他用 "typedef vector<double>::size_type"而不是用 "int"

我刚刚学习C++,并且正在使用AcceleratedC++。在一个vector例子中,作者使用了如下代码;typedefvector::size_typevec_sz;vec_szsize=homework.size;我知道typedefvector::size_typevec_sz;这样他就不必将下一个命令写成vector::size_typesize=homework.size;,但我的问题是他为什么不直接声明size改为整数?intsize=homework.size;这是因为我们使用了vector吗?如果是这样,是否意味着vector迭代器返回的值不能存储在常规变量中?

c++ - 在 C++ 中将具有 unique_ptr 的对象插入 vector

我有一个简单的类结构来模拟离散模拟,它有一个状态vector,每个状态包含许多转换,作为智能指针vector保存。我使用智能指针来保存转换,因为在我的完整应用程序中我需要多态性。#include#includeclassTransition{public:Transition(){}};classState{public:State(intnum):num(num),transitions(){}voidadd_transition(std::unique_ptrtrans){transitions.push_back(std::move(trans));}private:intnum

c++ - 范围的范围到 vector 的 vector

假设我有一个名为rng的T范围。我能行autogroups=ranges::view::group_by(rng,bin_op);组现在是一系列T的范围。这个我也可以autogroups=ranges::view::group_by(rng,bin_op)|ranges::to_vector;获取T范围的vector。然而这autogroups=ranges::view::group_by(rng,bin_op)|ranges::to_vector|ranges::action::transform([](autor){returnr|ranges::to_vector;};还有aut

c++ - 检查 std::vector 是否有重复项

我想检查一个整数vector是否有任何重复项,如果有则必须返回true。所以我尝试做这样的事情:vectoruGuess={1,2,3,3,4,5}vectora=uGuess;sort(a.begin(),a.end());boold=unique(a.begin(),a.end());这将不起作用,因为unqiue不能分配为bool值。我应该如何着手呢?如果我要编写一个for循环来执行相同的操作,我应该怎么做? 最佳答案 您要查找的算法是std::adjacent_find.//Thecontainermustbesorted!

c++ - 在 C++ 中可以使用构造函数将 2D Vector 初始化为单行吗?

像这样初始化2Dvector可以吗(这里5x42Dvectro中的所有值都初始化为3)?std::vector>foo(5,std::vector(4,3));这似乎没有问题,但我在网上看到的每个地方似乎都建议使用for循环和push_back()来初始化这样一个vector。我最初担心这里的所有行都会指向同一个vector,但事实并非如此。我错过了什么吗? 最佳答案 这是完全有效的-您将获得一个二维vector([5,4]个元素),每个元素都初始化为3。对于大多数其他情况(例如,您想要在不同的元素中使用不同的值),您不能使用任何单

c++ - Boost uBLAS 矩阵/vector 积

有人可以提供一个例子说明如何使用uBLAS产品来乘法吗?或者,如果有更好的C++矩阵库,您可以推荐我也欢迎。这正在变成一个令人头疼的问题。这是我的代码:vectormyVec(scalar_vector(3));matrixmyMat(scalar_matrix(3,3,1));matrixtemp=prod(myVec,myMat);这是错误:cannotconvertfrom'boost::numeric::ublas::matrix_vector_binary1'to'boost::numeric::ublas::matrix'我已经用尽了我的搜索。Stackoverflow对此

c++ - 在 C++ 中手动排序 vector<int>

我目前正在研究Vectors在C++中的工作原理。我已经阅读并很好地理解了它们的功能。我正在研究对具有10,000个整数的vector对象进行排序的不同方法,我使用了std::sort方法和shell排序。我注意到对vector进行shell排序比对简单的C样式数组进行排序要慢。我了解到这是因为“不支持在容器中间快速插入或移除元素”(http://www.cppreference.com/wiki/container/vector/start)。所以很明显,具有大量随机访问的shell排序会非常慢。我想知道在任何人的经验中,对于具有10,000个整数的vector,更好的手动排序方法是

c++ - 使用 std::vector 或数组初始化 boost 矩阵

我有一个方法将std::vector作为其参数之一。有没有一种方法可以通过将std::vector分配给矩阵来初始化矩阵?这是我在下面尝试做的事情。有谁知道我如何实现将vector(甚至double指针)分配给矩阵?提前致谢。迈克voidFoo(std::vectorv){matrixm(m,n,v);//workwithmatrix...} 最佳答案 这是如何做到这一点的另一个例子:#include#include#include#include#includenamespaceublas=boost::numeric::ubla