stdvector 相关问题

序列类型,定义为标准库的一部分。

C++ 14 - 通过在结构上调用空方法修复分段错误?

所以一切都工作得很好,直到我决定注释掉打印方法(用于调试)。一旦我将其注释掉,我的代码就开始出现分段错误。 我认为这是因为我正在以某种方式修改

回答 1 投票 0

std::vector:为什么没有发生 out_of_range 错误?

Mac M1。 铿锵++——版本 Apple clang 版本 16.0.0 (clang-1600.0.26.4) 目标:arm64-apple-darwin24.0.0 线程模型:posix 我的代码: #包括 #包括 int main()...

回答 1 投票 0

“reserve”和“iterator”与std::vector的关系

当对此迭代器对象使用reserve()方法时,程序会产生意外错误。 当我使用没有它的 Reserve() 方法时,它会按预期工作,但是当我使用迭代器时,它会...

回答 2 投票 0

std::shared_ptr 的 std::vector 可以保存指向同一基类的不同子类的指针吗? [已关闭]

我一直在尝试创建一个动态数据结构来保存许多不同类的对象,所有这些对象都派生自同一个基类。 我在很多地方都找到了建议...

回答 3 投票 0

std::shared_pointer 向量可以保存指向同一基类的不同子类的共享指针吗?

我一直在尝试创建一个动态数据结构来保存许多不同类的对象,所有这些对象都派生自同一个基类。 我在很多地方都找到了建议...

回答 1 投票 0

std::span 位于连续数据的容器上

std::span 在 std::vectors、std::arrays 或 c 指针上效果很好。然而,连续存储器通常具有与其关联的不同类型,例如数组向量。我正在努力...

回答 1 投票 0

使用 Boost.Asio 异步 UDP 服务器进行 MSVC 矢量调试断言

我正在使用 Boost.Asio 开发跨平台 UDP 异步服务器,并在使用 MSVC (Visual Studio 2022) 编译时出现以下断言错误: 文件:/include/vecto...

回答 1 投票 0

为什么 std::vector::assign 不尽快释放现有分配的内存?

根据 cppreference,std::vector::assign 将内容替换为 value value 的 count 个副本。 该定义意味着向量的现有状态不用于分配。 在

回答 1 投票 0

获取空向量的 front() 会产生意外行为[重复]

我有一个向量,其中包含一个类对象。 我这样声明 矢量队列; 我删除了向量中的第一个元素。但似乎第一个元素仍在 vecto 中......

回答 3 投票 0

避免通用代码中指针别名的技巧

这是这个问题的后续问题,限制访问属于单独对象的分配数组,在发现跨编译单元按值返回无助于提示

回答 1 投票 0

C++:嵌套范围 For 循环,用于迭代向量的向量

考虑以下代码片段,该代码片段运行良好。 正如您所看到的,它使用 2 个嵌套的 for 循环来迭代向量的向量: #定义顶点 10 矢量

回答 1 投票 0

移动 std::vector 的构造函数

我发现了一个有趣的问题,但我不确定原因。这是我的代码: #包括 #包括 使用命名空间 std; std::vector&& fun_...

回答 1 投票 0

尝试使用 std::thread 和 std::vector 引用已删除的构造函数?

我正在尝试在 std::vector 对象中使用具有 std::thread 字段的 C++ 类(带有构造函数和析构函数)。我正在使用 C++ 17 和 Visual Studio 2022 来编译所示的所有示例

回答 1 投票 0

关于在 C++ 中将数组存储在 std::vector 中的问题

我不清楚以下内容。 首先,这段代码编译得很好: #包括 类型定义结构{ int x1,x2,x3,x4; } 整数; typedef std::vector vec; int main(){ 向量...

回答 7 投票 0

使用 `vec.push_back(vec.back());` 安全吗?

我注意到vector::push_back的参数是const T&。我知道当我调用push_back时可能会发生重新分配,但vector::back返回一个引用。也是这样吗...

回答 1 投票 0

如何获取对一系列 std::vector 元素的 const 引用?

我想从 std::vector 获取一系列元素并将它们存储为 const-ref,因为我只想读取但不想修改它们。 #包括 #包括 ...

回答 3 投票 0

重复 std::vector 的内容

假设我有一个简单类型的向量(可能很大),例如 std::vector v{1,2,3}; 重复n次的最好方法是什么? 例如。 3 次将得到结果 {1,2,3,1,2,3,1,2,3}

回答 4 投票 0

对一系列 std::vector 元素的常量引用

我想从 std::vector 获取一系列元素并将它们存储为 const 引用,因为我只想读取但不想修改它们。 #包括 #包括 我想从std::vector<MyClass>获取一系列元素并将它们存储为常量引用,因为我只想读取但不想修改它们。 #include <iostream> #include <vector> // a "large" user class class MyClass { public: int data; MyClass(int val) : data(val) {} }; int main() { // Initialize vector to MyClass objects std::vector<MyClass> myClass{1, 2, 3, 4, 5, 6, 7, 8}; // Get const reference to element with index 0 const auto &el = myClass[0]; // Get const references to a range of elements const unsigned int start = 1, end = 4; // const auto &elRange = ??? return 0; } 我怎样才能实现这样的目标? 我想从 std::vector 获取一系列元素并将它们存储为 const 引用,因为我只想读取但不想修改它们。 最好是使用 std::span,这需要 c++20 支持。 否则,您可以编写一个简单的 SimpleSpan 类来执行此操作。最简单的就像: // A simple span-like class for C++17 template<typename T> class SimpleSpan { T* data_; std::size_t size_; public: constexpr SimpleSpan(T* data, std::size_t size) : data_{ data }, size_{ size } {} constexpr T& operator[](std::size_t index) { return data_[index]; } constexpr T& operator[](std::size_t index) const { return data_[index]; } constexpr T* begin() { return data_; } constexpr T* end() { return data_ + size_; } constexpr T* begin() const { return data_; } constexpr T* end() const { return data_ + size_; } constexpr std::size_t size() const { return size_; } }; 而且只是 // Get const references to a range of elements using our SimpleSpan const unsigned int start = 1, end = 4; SimpleSpan<const MyClass> elRange(&myClass[start], end - start); 观看现场演示 std::跨度 const auto elRange = std::span(&myClass[1], &myClass[4]); 这就是 std::span 的用途,但您需要 C++20。 如果你被困在较小的 C++ 版本上,你可以使用 boost::span。 (它需要 2 个标头才能包含在项目中,您不需要整个 boost 库) auto elements = boost::span<const MyClass>{myClass}.subspan(start, end-start); C++17 godbolt 示例

回答 3 投票 0

c++ 获取对一系列 std::vector 元素的 const 引用

#包括 #包括 // 一个“大”用户类 类我的类{ 民众: 整数数据; MyClass(int val) : 数据(val) {} }; int main() { // 初始化 ve...

回答 1 投票 0

排序函数不起作用,编译器抛出“向量下标超出范围”错误?

我为一个关于一个著名的数学常数(称为 Krapekar 常数)的项目编写了代码。每个有四位数字的数字,其中至少有两位彼此不同,将是

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.