小编Ash*_*ppa的帖子

为什么BOOST_FOREACH有时不能用C++字符串工作?

我正在使用BOOST_FOREACH迭代C++字符串的字符,如下所示:

void foobar(const string& str)
{
    BOOST_FOREACH(const char ch, str)
    {
        // Do something with ch
    }

    return;
}
Run Code Online (Sandbox Code Playgroud)

这段代码适用于以下编译模式:

  • 多线程(发布)(/ MT)
  • 多线程调试(/ MTd)
  • 多线程DLL(发布)(/ MD)

它仅在此模式下导致运行时错误(例外):

  • 多线程调试DLL(发布)(/ MDd)

上面的代码片段没有编译错误或警告,让我相信BOOST_FOREACH知道它在这里处理的容器.此外,更改const char chconst char& ch行为没有变化.

为什么这段代码会导致这种糟糕的运行时行为

为什么只能在Debug DLL模式下?

在C++字符串上使用BOOST_FOREACH是错误的吗?

如果是,那么最佳解决方法是什么?

(请注意,我正在使用Visual Studio 2008和Boost 1.39.)

c++ string boost visual-studio

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

如何选择函数返回的x-tuple的某些元素?

我是Python的新手.考虑str.partition()返回3元组的函数.如果我只对这个元组的元素0和2感兴趣,那么从这样的元组中选择某些元素的最佳方法是什么?

我现在可以做到:

# Introduces "part1" variable, which is useless
(part0, part1, part2) = str.partition(' ')
Run Code Online (Sandbox Code Playgroud)

要么:

# Multiple calls and statements, again redundancy
part0 = str.partition(' ')[0]
part2 = str.partition(' ')[2]
Run Code Online (Sandbox Code Playgroud)

我希望能够做到这样的事情,但不能:

(part0, , part2) = str.partition(' ')
# Or:
(part0, part2)   = str.partition(' ')[0, 2]
Run Code Online (Sandbox Code Playgroud)

python tuples list iterable-unpacking

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

C++ STL:如何在需要访问元素及其索引时迭代向量?

我经常发现自己需要迭代STL向量.当我这样做时,我需要访问vector 元素及其索引.

我曾经这样做:

typedef std::vector<Foo> FooVec;
typedef FooVec::iterator FooVecIter;

FooVec fooVec;
int index = 0;
for (FooVecIter i = fooVec.begin(); i != fooVec.end(); ++i, ++index)
{
    Foo& foo = *i;
    if (foo.somethingIsTrue()) // True for most elements
        std::cout << index << ": " << foo << std::endl;
}
Run Code Online (Sandbox Code Playgroud)

在发现BOOST_FOREACH之后,我将其缩短为:

typedef std::vector<Foo> FooVec;

FooVec fooVec;
int index = -1;
BOOST_FOREACH( Foo& foo, fooVec )
{
    ++index;
    if (foo.somethingIsTrue()) // True for most elements
        std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ iteration stl vector

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

一组结构的平面数组?

大家好.谢谢你点击.

这是我在编写OpenGL时遇到的一个问题,但它总体上是一个非常普遍的问题 - 因此没有特定的图形.

我有一个结构(不是一个类,只是一个简单的结构),粒子.

typedef struct
{
    float x;
    float y;
    float z;
}float3;

typedef struct
{
   float3 position;
   float3 velocity;
   //...other stuff
}Particle;
Run Code Online (Sandbox Code Playgroud)

我正在使用一堆粒子(粒子*粒子[]),但我有一个函数,需要以x,y,z顺序打包的位置浮点*.

这样我的问题总结:

我的数据:

//I have this in a bunch of encapsulated structs
[... {1.0f, 2.0f, 3.0f,} ... {4.0f, 5.0f, 6.0f} ...]

//I want...
[1.0f, 2.0f, 3.0f, 4.0f, 5.0f, 6.0f]
Run Code Online (Sandbox Code Playgroud)

我的问题是......我已经掌握了所有数据!我不想再次使用malloc/memcpy了.有没有办法使用已存在的数据?任何C指针杂技?我也担心对齐/填充等问题.

(float3是CUDA中定义的结构,如果有人好奇的话).

c c++ opengl

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

Powershell Object []到.Net Collection?

在下面的Powershell语句中,为什么我需要逗号从Powershell Object []实例化.Net数组列表或堆栈?

$list = "A","B","C"
$stack = New-Object System.Collections.Stack(,$list)
Run Code Online (Sandbox Code Playgroud)

为什么我需要它,逗号是什么意思?

.net arrays powershell

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

如何git日志一个远程的所有分支?

在我的本地存储库中,添加一个新的遥控器并获取其历史记录:

$ git remote add foo_remote git@github.com:joe/foo.git
$ git fetch foo_remote
Run Code Online (Sandbox Code Playgroud)

现在,如何查看仅此远程服务器所有分支的日志?我有兴趣查看仅此远程服务器的提交(使用git log)和DAG(使用gitk)。

我知道我可以查看此远程服务器上特定分支的日志和DAG:

$ git log foo_remote/branch1
$ gitk foo_remote/branch1
Run Code Online (Sandbox Code Playgroud)

我想要这样做的东西:

$ git log foo_remote/*
$ gitk foo_remote/*
Run Code Online (Sandbox Code Playgroud)

git gitk

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

TortoiseSVN:如何从存储库中完全删除项目的所有信息(工作副本)?

我正在使用TortoiseSVN备份一些非常大的二进制文件,我不再需要它们.我想从存储库中恢复磁盘空间.所有这些文件/文件夹都保存在TortoiseSVN中单个目录下的单个项目(工作副本)下.

如何从SVN 存储库中删除与该项目相关的所有版本化文件和信息?

svn tortoisesvn repository

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

CUDA线程分配

我已经阅读了CUDA编程指南,我无法理解下面显示的线程分配方法:

dim3 dimGrid( 2, 2, 1 );
dim3 dimBlock( 4, 2, 2 );
KernelFunction<<< dimGrid, dimBlock >>>(. . .);
Run Code Online (Sandbox Code Playgroud)

有人可以解释如何为上述条件分配线程吗?

cuda

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

CUDA:为什么Thrust在向GPU上传数据时这么慢?

我是GPU世界的新手,刚刚安装了CUDA来编写一些程序.我玩推力库但发现在将数据上传到GPU时速度太慢了.在我可怕的桌面上,主机到设备部分只有大约35MB/s.怎么回事?

环境:Visual Studio 2012,CUDA 5.0,GTX760,Intel-i7,Windows 7 x64

GPU带宽测试: 在此输入图像描述

它应该具有至少11GB/s的主机到设备的传输速度,反之亦然!但事实并非如此!

这是测试程序:

#include <iostream>
#include <ctime>
#include <thrust/device_vector.h>
#include <thrust/host_vector.h>

#define N 32<<22

int main(void)
{
    using namespace std;

    cout<<"GPU bandwidth test via thrust, data size: "<< (sizeof(double)*N) / 1000000000.0 <<" Gbytes"<<endl;
    cout<<"============program start=========="<<endl;

    int now = time(0);
    cout<<"Initializing h_vec...";
    thrust::host_vector<double> h_vec(N,0.0f);
    cout<<"time spent: "<<time(0)-now<<"secs"<<endl;

    now = time(0);
    cout<<"Uploading data to GPU...";
    thrust::device_vector<double> d_vec = h_vec;
    cout<<"time spent: "<<time(0)-now<<"secs"<<endl;

    now = time(0);
    cout<<"Downloading data to h_vec...";
    thrust::copy(d_vec.begin(), d_vec.end(), h_vec.begin());
    cout<<"time spent: "<<time(0)-now<<"secs"<<endl<<endl; …
Run Code Online (Sandbox Code Playgroud)

cuda gpu nvidia thrust

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

NVV中的nvidia-smi -ac等价物

我学会了比nvidia-smi -ac可以用来改变GPU核心和内存的时钟速率.nvidia-smi是建立在NVML库的基础上的吗?自从我检查文档以来,它在NVML中的等价物是什么

http://cyber.sibsutis.ru:82/GPGPU/sdk/CUDA_TOOLKIT/nvml.pdf

但只能看到用于获取时钟速率值而不是设置它们的API?

谢谢

cuda nvml

0
推荐指数
1
解决办法
1891
查看次数