- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我正在使用 this 打印设备 vector 例子。我想让阵列排成一行。
格式设置仅应用于第一个数字。
template <typename Iterator>
void print_range(const std::string& name, Iterator first, Iterator last)
{
typedef typename std::iterator_traits<Iterator>::value_type T;
std::cout << name << ": ";
thrust::copy(first, last, std::ostream_iterator<T>(std::cout << std::setw(4) << std::setfill(' '), " "));
std::cout << "\n";
}
重要的一行是:
thrust::copy(first, last, std::ostream_iterator < T > (std::cout << std::setw(4) << std::setfill(' '), " "));
电流输出
Box Numbers :: _110 109 108 109 108 107 106 105 106 105
Difference :: _110 -1 -1 1 -1 -1 -1 -1 1 -1
Difference 2:: _110 -111 0 2 -2 0 0 0 2 -2
Key Vector :: _110 -1 -1 1 -1 -1 -1 -1 1 -1
Inclusive :: _110 -1 -2 1 -1 -2 -3 -4 1 -1
期望的输出
Box Numbers :: _110 109 108 109 108 107 106
Difference :: _110 -1 -1 1 -1 -1 -1
Difference 2:: _110 -111 0 2 -2 0 0
Key Vector :: _110 -1 -1 1 -1 -1 -1
Inclusive :: _110 -1 -2 1 -1 -2 -3
格式设置仅应用于第一个数字。如果我更改宽度或填充,它会应用于第一个数字,但不会应用于其余数字。
注意
我只使用了“_”字符,这样我就可以看到在何处应用格式。
输出在代码块中,否则堆栈溢出会覆盖我的格式并删除顺序空格。
最佳答案
我找不到将 thrust::copy 的输出格式化为 cout 的方法。最终复制到宿主载体。然后我可以遍历主机 vector 并格式化输出。
不太优雅,但可以为此目的完成工作。
template <typename Iterator>
void print_range(const std::string& name, Iterator first, Iterator last)
{
// Print Vector Name
std::cout << name << ": ";
// Copy Vector to host
int print_length = thrust::distance(first, last);
thrust::host_vector<int> to_print(print_length);
thrust::copy(first, last, to_print.begin());
// Print Vector
for (auto val : to_print)
std::cout << setw(4) << val;
std::cout << endl;
}
我找到了另一个同样有效的选项。 Example
使用 for_each 调用自定义 printf
//----------------------------
// Print Functor
//----------------------------
struct printf_functor
{
__host__ __device__
void operator() (int x)
{
printf("%4d ", x);
}
};
//----------------------------
// Print Range
//----------------------------
template <typename Iterator>
void print_range(const std::string& name, Iterator first, Iterator last)
{
// Print Vector Name
std::cout << name << ": ";
// Print Each Element
thrust::for_each(thrust::device, first, last, printf_functor());
std::cout << endl;
}
关于c++ - 如何格式化 thrust::copy(ostream_iterator),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57432644/
我尝试过的所有标准实现都允许将值分配给 std::ostream_iterator,而无需在分配前取消引用它们。尽管标准算法在赋值之前取消引用迭代器,但我想知道为什么有些实现不只是静态地禁止赋值(在代
让 Foo.hpp : class Foo { public: void print() const; protected: vector*> bar_; }; voi
我今天刚刚学会了如何使用ostream_iterator,但我不知道这与普通的for循环方式相比是否有效。 代码如下: //The first one vector v = {1, 2, 3, 4,
我有这样的代码,我很困惑为什么字符串中的空格没有被修剪? #include #include #include #include #include #include using names
std::istream_iterator ist(std::cin); std::istream_iterator eof; std::vector str_vec(ist, eof); std::
我希望能够使用 ostream_iterator 流式传输到二进制文件。但是 ostream_iterator使用 FormattedOuputFunction所以它会写 ASCII,而不是二进制:
我有各种带有数字数据的 std::vector 实例,主要是 int16_t、int32_t 等。我想以尽可能快的方式将这些数据转储到文件中。如果我使用 ostream_iterator,它会在一次操
我有以下代码(来自 here)随机化一个包含 1500 个值的 vector ,我想将它们放在文本文件中但不能。老实说,我并不完全理解这段代码是如何工作的,所以我希望有人向我解释它是如何工作的和/或如
我正在尝试使用 ostream_iterator 将成对 vector 写入文件。ostream_iterator 需要在声明时应用模板参数。 vector 定义为- vector> test; 当我
有人刚刚帮助我使用 boost 从目录中获取文件名 if (exists(p)) // does p actually exist? { if (is_direc
我主要使用 ostream_iterator 在 C++ 中实现 toString 方法。 std::ostream_iterator output(std::cout, " "); 但是,在打印到控
我可以使用 set 迭代器和 std::cout 来显示存储在多集中的元素,但对于学习过程我想通过 来完成ostream_iterator 看起来我有点无能为力。 这是我所做的和我感兴趣的事情 我有一
我看到这个用户post yesterday .我认为这是输出 vector 的一种很酷的方式。所以我输入了一个示例并问自己这与 for each 循环相比如何? template void prin
我已经声明了一个 operator : std::ostream& operator& p) { o > data; std::copy(data.begin(), data.end(), s
这个问题在这里已经有了答案: How can I print a list of elements separated by commas? (33 个答案) 关闭 6 年前。 有没有一种方法可以使
下面的代码就不用多说了: #include #include #include #include using namespace std; typedef pair PAIR; ostream
我从 http://en.cppreference.com/w/cpp/iterator/ostream_iterator/ostream_iterator 中找到了这段代码: #include #
我正在研究'unique_copy(forwrdIt first,forwrdIt last,forwrdIt result)',我试图将结果传递为:'ostream_iterator(cout, "
我是 C++ 的新手,我遇到了一个问题,我想使用以下代码(来自 Cplusplus )但是要将我的结果输出到一个新文件或使用一个 vector 来保存它(我更喜欢使用一个 vector ), 我应该怎
我想使用 copy() 打印出 T 类型容器的内容。我试过: template void print_con( const T& con, const string& sep = ", ", cons
我是一名优秀的程序员,十分优秀!