相关疑难解决方法(0)

如何编写可以接收数组或向量的函数?

我想编写一个带有一个参数的C++函数,以便可以传入以下任何一种类型:

std::vector<int>
std::array<int>
int array[numElements]
int *ptr = new int[numElements]
etc
Run Code Online (Sandbox Code Playgroud)

模板是实现这一目标的最佳方式吗?

c++ arrays templates function stdvector

6
推荐指数
2
解决办法
461
查看次数

c ++创建对相同数据进行操作的子向量

你好,我有一个向量:

vector<int> myCuteVector {1,2,3,4};
Run Code Online (Sandbox Code Playgroud)

现在我想以这样的方式创建一个子向量,它将包含来自 myCuteVector 的 2 个第一个元素,这样在修改子向量元素之后,myCuteVector 的元素也会改变。

伪代码:

vector<int> myCuteVector {1,2,3,4};
vector<int> myCuteSubVector = myCuteVector[0:2];
myCuteSubVector[0] = 5;
printf("%d", myCuteVector[0]) //would print also 5;

Run Code Online (Sandbox Code Playgroud)

有可能实现吗?

c++ pointers vector

6
推荐指数
2
解决办法
75
查看次数

如何迭代c ++中的数字列表

我如何遍历数字列表,以及有多少不同的方法可以做到这一点?

我认为会起作用:

#include <cstdlib>
#include <iostream>
#include <list>


using namespace std;


int main()

{
    int numbers[] = {2, 4, 6, 8};
    int i = 0;
    for(i=0; i< numbers.size();i++)
            cout << "the current number is " << numbers[i];


    system("pause");

    return 0;

}
Run Code Online (Sandbox Code Playgroud)

我在for循环行上遇到错误:

请求部件'size''numbers',其是非类类型的'int[4]'

c++

5
推荐指数
3
解决办法
4万
查看次数

在C++ 11中创建动态2D矩阵的好方法

我已经知道如何使用new并使用它来创建动态2D矩阵delete.由于C++ 11在这里与许多新的存储器功能,例如unique_ptr,array容器等; 什么是创建2D矩阵的好方法,以便人们不需要使用delete运算符显式释放矩阵?

c++ c++11

5
推荐指数
1
解决办法
2956
查看次数

反转C数组的迭代器

对于使用STL函数遍历一个C阵列中,std::beginstd::end功能是很方便的等同物.begin().end().但是,对于双向C++容器,没有std::rbeginstd::rend等价的反向迭代器.这样的等价物是否存在于其他名称之下,或者是否易于制作?我意识到一个难点是std::begin通常返回一个原始指针,而对于相反的情况,这需要一个包装器,以便++操作可以重载.可能看起来非常不完整

template<class T>
class ReverseArrayIterator {
public:
    ReverseArrayIterator(T* ptr) : _ptr(ptr) {}
    operator T*() {
        return _ptr;
    }
    void operator++() {
        --_ptr;
    }
    T operator*() {
        return *_ptr;
    }
    bool operator!= (ReverseArrayIterator& rhs) {
        return _ptr != rhs._ptr;
    }
private:
    T* _ptr;
};

template<class T, size_t size>
ReverseArrayIterator<T> rbegin(T (&array)[size]) {
    return ReverseArrayIterator<T>(&array[0] + size - 1);
}

template<class T, size_t size>
ReverseArrayIterator<T> rend(T (&array)[size]) { …
Run Code Online (Sandbox Code Playgroud)

c++ iterator stl c++11

5
推荐指数
1
解决办法
530
查看次数

STL容器的std :: string_view

这是对string_view对象的一个很好的解释.

除了std :: string之外,是否有任何STL容器的'_view'对象?

在我看来,这是一个非常有用的东西.想象一个std::vector_view只存储start迭代器和length字段的类.实际上并不拥有底层数据可以提高效率.

c++ stl

5
推荐指数
1
解决办法
197
查看次数

从自定义值修剪向量的最佳方法

在给定要删除的值的情况下,是否有一种更聪明/更精细的方式来修剪矢量,类似于修剪字符串,例如从

0 0 0 1 2 3 56 0 2 4 0 0
Run Code Online (Sandbox Code Playgroud)

1 2 3 56 0 2 4
Run Code Online (Sandbox Code Playgroud)

我找不到类似修剪的功能,查找/擦除是最佳选择吗?

c++

5
推荐指数
1
解决办法
169
查看次数

C# 中 ^1 作为数组索引(例如 arr[^1])是什么意思?

int []arr = new int[4];
arr[^1];   // returns the last element
Run Code Online (Sandbox Code Playgroud)

我正在尝试弄清楚上面的语法。它返回最后一个元素,但为什么呢?

c# syntax array-indexing

5
推荐指数
1
解决办法
1333
查看次数

在编程的上下文中,“拥有”是什么意思?

cppreference使用它来描述 std::string_view:

devtutsodocumentation 也 使用它来描述 std::string_view :

C++17 引入了std::string_view,它只是一个非拥有范围的 const chars,可实现为一对指针或一个指针和一个长度。

和这里的各种其他问题和答案参考它,但我找不到它的含义的任何解释。

c++ string-view

5
推荐指数
1
解决办法
89
查看次数

对于具有固定的运行时确定的大小的数组,是否有标准的C ++类?

我需要一个运行时大小已知的容器,而无需调整大小。std::unique_ptr<T[]>会很有用,但没有封装的size成员。同时std::array只适用于编译类型的大小。因此,我需要这些类的某种组合,而没有/最小的开销。

是否有满足我需求的标准类,也许在即将发布的C ++ 20中有?

c++ arrays c++20

4
推荐指数
3
解决办法
482
查看次数