标签: vector

Octave/Matlab:扩展一个向量使其重复的向量?

有没有办法通过使矢量重复来扩展矢量?

>v = [1 2];
>v10 = v x 5; %x represents some function. Something like "1 2" x 5 in perl
Run Code Online (Sandbox Code Playgroud)

然后v10将是:

>v10
     1 2 1 2 1 2 1 2 1 2
Run Code Online (Sandbox Code Playgroud)

这应该适用于一般情况,而不仅仅是[1 2]

matlab vector octave

91
推荐指数
2
解决办法
5万
查看次数

从向量中删除项目,而在C++ 11范围内'for'循环?

我有一个IInventory*的向量,我正在使用C++ 11范围循环遍历列表,以便对每个进行处理.

在做了一些东西之后,我可能想要从列表中删除它并删除对象.我知道我可以随时调用delete指针来清理它,但是在范围for循环中,从矢量中删除它的正确方法是什么?如果我从列表中删除它将使我的循环失效?

std::vector<IInventory*> inv;
inv.push_back(new Foo());
inv.push_back(new Bar());

for (IInventory* index : inv)
{
    // Do some stuff
    // OK, I decided I need to remove this object from 'inv'...
}
Run Code Online (Sandbox Code Playgroud)

c++ for-loop vector c++11

91
推荐指数
4
解决办法
6万
查看次数

如何在R中创建零长度的数值向量

我想知道,如何在R中创建数字零长度向量?

r numeric vector zero

91
推荐指数
2
解决办法
20万
查看次数

为什么libc ++的vector <bool> :: const_reference不是bool?

第23.3.7节vector<bool>[vector.bool]第1段规定:

template <class Allocator> class vector<bool, Allocator> {
public:
    // types:
    typedef bool              const_reference;
    ...
Run Code Online (Sandbox Code Playgroud)

但是,当使用libc ++时,此程序无法编译:

#include <vector>
#include <type_traits>

int
main()
{
    static_assert(std::is_same<std::vector<bool>::const_reference, bool>{}, "?");
}
Run Code Online (Sandbox Code Playgroud)

此外,我注意到C++标准在本规范中一直与C++ 98一致.我还注意到自从第一次引入libc ++以来,libc ++一直没有遵循这个规范.

这种不合格的动机是什么?

c++ vector c++-standard-library libc++ std-bitset

91
推荐指数
1
解决办法
4797
查看次数

测试单个向量的所有元素之间的相等性

我正在尝试测试向量的所有元素是否彼此相等.我提出的解决方案似乎有点迂回,都涉及检查length().

x <- c(1, 2, 3, 4, 5, 6, 1)  # FALSE
y <- rep(2, times = 7)       # TRUE
Run Code Online (Sandbox Code Playgroud)

unique():

length(unique(x)) == 1
length(unique(y)) == 1
Run Code Online (Sandbox Code Playgroud)

rle():

length(rle(x)$values) == 1
length(rle(y)$values) == 1
Run Code Online (Sandbox Code Playgroud)

一个允许我包含容差值的解决方案,用于评估元素之间的"平等",这是避免FAQ 7.31问题的理想选择.

是否有我完全忽略的测试类型的内置函数?identical()all.equal()比较两个R对象,因此它们在这里不起作用.

编辑1

以下是一些基准测试结果.使用代码:

library(rbenchmark)

John <- function() all( abs(x - mean(x)) < .Machine$double.eps ^ 0.5 )
DWin <- function() {diff(range(x)) < .Machine$double.eps ^ 0.5}
zero_range <- function() {
  if (length(x) == 1) …
Run Code Online (Sandbox Code Playgroud)

equality r vector

88
推荐指数
9
解决办法
6万
查看次数

C++将vector <int>转换为vector <double>

什么是一个转换的好干净的方式std::vector<int> intVecstd::vector<double> doubleVec.或者,更一般地说,转换两种可转换类型的向量?

c++ stl vector type-conversion

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

列出R中向量中的不同值

如何在值为复制的向量中列出不同的值?我的意思是,类似于以下SQL语句:

SELECT DISTINCT product_code
FROM data
Run Code Online (Sandbox Code Playgroud)

r vector distinct-values

87
推荐指数
4
解决办法
16万
查看次数

vector <bool>的替代方案

正如(希望)我们都知道的那样,vector<bool>完全被打破,不能被视为交流阵列.获得此功能的最佳方法是什么?到目前为止,我所想到的想法是:

  • 使用vector<char>替代,或
  • 使用包装类并拥有 vector<bool_wrapper>

你们怎么处理这个问题?我需要c_array()功能.

作为一个附带问题,如果我不需要c_array()方法,如果我需要随机访问,解决此问题的最佳方法是什么?我应该使用双端队列还是别的什么?

编辑:

  • 我确实需要动态调整大小.
  • 对于那些不知道的人来说,c_array()是专门的,所以每个bool需要1位.因此,您无法将其转换为C风格的数组.
  • 我猜"包装"有点用词不当.我在想这样的事情:

当然,由于可能的对齐问题,我必须读入my_bool :(

struct my_bool
{
    bool the_bool;
};
vector<my_bool> haha_i_tricked_you;
Run Code Online (Sandbox Code Playgroud)

c++ stl boolean vector

86
推荐指数
6
解决办法
4万
查看次数

使用 std::vector 作为原始内存的视图

我正在使用一个外部库,它在某些时候给了我一个指向整数数组和大小的原始指针。

现在我想使用std::vector来访问和修改这些值,而不是使用原始指针访问它们。

这是一个解释这一点的人为示例:

size_t size = 0;
int * data = get_data_from_library(size);   // raw data from library {5,3,2,1,4}, size gets filled in

std::vector<int> v = ????;                  // pseudo vector to be used to access the raw data

std::sort(v.begin(), v.end());              // sort raw data in place

for (int i = 0; i < 5; i++)
{
  std::cout << data[i] << "\n";             // display sorted raw data 
}
Run Code Online (Sandbox Code Playgroud)

预期输出:

1
2
3
4
5
Run Code Online (Sandbox Code Playgroud)

原因是我需要<algorithm>在该数据上应用算法(排序、交换元素等)。

在另一方面改变这种载体的大小将永远不会改变,因此push_back, …

c++ vector stdvector c++11

86
推荐指数
8
解决办法
1万
查看次数

为什么vector <bool>不是STL容器?

Scott Meyers的书第18项有效STL:50改进您对标准模板库的使用的具体方法说避免vector <bool>因为它不是STL容器而且它实际上并不存在bool.

以下代码:

vector <bool> v; 
bool *pb =&v[0];
Run Code Online (Sandbox Code Playgroud)

不会编译,违反STL容器的要求.

错误:

cannot convert 'std::vector<bool>::reference* {aka std::_Bit_reference*}' to 'bool*' in initialization
Run Code Online (Sandbox Code Playgroud)

bool返回类型应该是T&,但为什么它是特殊情况vector<T>::operator []

什么是T&真正组成的呢?

该项目进一步说:

deque<bool> v; // is a STL container and it really contains bools
Run Code Online (Sandbox Code Playgroud)

这可以用作替代品vector<bool>吗?

有人可以解释一下吗?

c++ containers stl vector bitvector

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