标签: vector

C++使用另一个向量扩展向量

我是C++领域的C/Python程序员,第一次使用STL.

在Python中,使用另一个列表扩展列表使用以下.extend方法:

>>> v = [1, 2, 3]
>>> v_prime = [4, 5, 6]
>>> v.extend(v_prime)
>>> print(v)
[1, 2, 3, 4, 5, 6]
Run Code Online (Sandbox Code Playgroud)

我目前使用这种算法方法在C++中扩展向量:

v.resize(v.size() + v_prime.size());
copy(v_prime.begin(), v_prime.end(), v.rbegin());
Run Code Online (Sandbox Code Playgroud)

这是扩展向量的规范方法,还是有一种我更缺失的简单方法?

c++ vector

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

什么是向量以及它们如何在编程中使用?

我熟悉矢量的数学/物理概念作为幅度和方向,但我也在编程的上下文中不断引用向量(例如C++似乎有一个stl :: vector库出现了经常在SO).

我从上下文中得到的直觉是,它们是一个相当原始的构造,最常用于表示可变长度数组的行(按照我认为的大小存储它的大小),但是如果有人可以的话,它会非常有用为我提供了更完整的解释,最好包括它们在实践中的使用方式和原因.

computer-science vector

38
推荐指数
3
解决办法
6万
查看次数

std :: vector reserve()和push_back()比resize()和数组索引更快,为什么?

我正在对一段代码进行快速性能测试

void ConvertToFloat( const std::vector< short >& audioBlock, 
                     std::vector< float >& out )
{
    const float rcpShortMax = 1.0f / (float)SHRT_MAX;
    out.resize( audioBlock.size() );
    for( size_t i = 0; i < audioBlock.size(); i++ )
    {
        out[i]  = (float)audioBlock[i] * rcpShortMax;
    }
}
Run Code Online (Sandbox Code Playgroud)

我很高兴原来非常天真的实现速度超过1毫秒来处理65536个音频样本.

然而,只是为了好玩,我尝试了以下

void ConvertToFloat( const std::vector< short >& audioBlock, 
                     std::vector< float >& out )
{
    const float rcpShortMax = 1.0f / (float)SHRT_MAX;
    out.reserve( audioBlock.size() );
    for( size_t i = 0; i < audioBlock.size(); i++ )
    {
        out.push_back( (float)audioBlock[i] …
Run Code Online (Sandbox Code Playgroud)

c++ optimization stl vector

38
推荐指数
2
解决办法
4万
查看次数

在空格处拆分字符串向量

我有以下向量:

tmp3 <- c("1500 2", "1500 1", "1510 2", "1510 1", "1520 2", "1520 1", "1530 2", 
"1530 1", "1540 2", "1540 1")
Run Code Online (Sandbox Code Playgroud)

我想在这个向量的每个原子中保留第二个数字,所以它会读取:

c(2,1,2,1,2,1,2,1,2,1)
Run Code Online (Sandbox Code Playgroud)

string whitespace split r vector

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

散列2D,3D和nD向量

对于由IEEE 32位浮点数组成的散列2d和3d向量,有什么好的散列函数(快速,良好的分布,很少的碰撞).我假设一般的3d向量,但假设法线(始终在[-1,1])的算法也是受欢迎的.我也不担心比特操纵,因为IEEE浮动也是IEEE浮动.

另一个更普遍的问题是散列Nd浮点向量,其中N非常小(3-12)并且是常量但在编译时不知道.目前我只是将这些花车作为uint并将它们混合在一起,这可能不是最好的解决方案.

3d hash geometry vector

38
推荐指数
2
解决办法
1万
查看次数

如何检查一系列数字是否单调递增(或递减)?

我们给出了一系列数字,作为向量foo.任务是找到的foo单调递增的 -每一个项目是否小于或等于下一个-或单调递减 -每个项目大于或小于下一个平等的.

当然,这可以通过循环找到,但更有创意吗?

r vector

38
推荐指数
4
解决办法
2万
查看次数

矢量迭代器不兼容

我有一个带有std :: vector数据成员的类,例如

class foo{
public:

const std::vector<int> getVec(){return myVec;} //other stuff omitted

private:
std::vector<int> myVec;

};
Run Code Online (Sandbox Code Playgroud)

现在在我的主要代码的某些部分,我试图迭代这样的向量:

std::vector<int>::const_iterator i = myFoo.getVec().begin();
while( i != myFoo.getVec().end())
{
   //do stuff
   ++i;
}
Run Code Online (Sandbox Code Playgroud)

我到达这个循环的那一刻,我得到了上述错误.

c++ stl vector

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

对n个第一个元素已经排序的向量进行排序?

考虑std::vector vN因素,并认为n第一要素已经整理与n < N(N-n)/N很小:

已排序/未排序的矢量

有没有一种聪明的方法使用STL算法来比这更完整地对这个向量进行排序std::sort(std::begin(v), std::end(v))

编辑:澄清:(Nn)未排序的元素应插入已排序的n个第一个元素中的正确位置.

EDIT2:奖金问题:以及如何找到n?(对应于第一个未排序的元素)

c++ sorting algorithm vector c++11

37
推荐指数
3
解决办法
2445
查看次数

如何在按钮单击时更改矢量可绘制路径的颜色

随着新的Android支持更新,矢量drawables获得向后兼容性.我有一个带有各种路径的矢量图像.我希望通过单击按钮或基于输入值以编程方式更改路径的颜色.是否可以访问矢量路径的name参数?然后改变颜色.

android vector vector-graphics android-vectordrawable

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

在Rust中连接向量的最佳方法

甚至可以在Rust中连接向量吗?如果是这样,有没有一种优雅的方式呢?我有这样的事情:

let mut a = vec![1, 2, 3];
let b = vec![4, 5, 6];

for val in &b {
    a.push(val);
}
Run Code Online (Sandbox Code Playgroud)

有谁知道更好的方法?

vector concatenation rust

37
推荐指数
4
解决办法
2万
查看次数