小编ene*_*ski的帖子

Java:迭代集合的最佳方式(此处为ArrayList)

今天,当我得到一段已经使用过数百次的代码时,我很乐意编写代码:

迭代集合(这里是ArrayList)

出于某种原因,我实际上看了Eclipse的自动完成选项,它让我想知道:

以下循环比其他循环更好用?

经典数组索引循环:

for (int i = 0; i < collection.length; i++) {
  type array_element = collection.get(index);
}
Run Code Online (Sandbox Code Playgroud)

Iterator hasNext()/ next():

for (Iterator iterator = collection.iterator(); iterator.hasNext();) {
  type type = (type) iterator.next();   
}
Run Code Online (Sandbox Code Playgroud)

我最喜欢的,因为它写得如此简单:

for (iterable_type iterable_element : collection) {

}
Run Code Online (Sandbox Code Playgroud)

java collections for-loop

94
推荐指数
3
解决办法
23万
查看次数

可变参数模板函数:没有匹配的函数,用于调用std :: endl

在我的代码中,我使用可变参数模板函数进行日志记录.但是当我std::endl用作参数时,我得到以下编译器错误:

错误:没有匹配函数来调用'LOG_ERROR(const char [14],int&,)'LOG_ERROR("sum of x + y =",z,std :: endl);

注意:候选人:'void LOG_ERROR()'内联void LOG_ERROR(){

注意:候选人需要0个参数,3个提供

我的代码:

#include <iostream>

inline void LOG_ERROR() { 
    std::cout << std::endl;
}

template<typename First, typename ...Rest>
void LOG_ERROR(First && first, Rest && ...rest){
    std::cout << std::forward<First>(first);
    LOG_ERROR(std::forward<Rest>(rest)...);
}

int main() {
    int foo=40;
    LOG_ERROR("My foo = ", foo, std::endl);
}
Run Code Online (Sandbox Code Playgroud)

代码工作得很好,"\n"但我很想知道它为什么失败std::endl以及如何解决它

c++ variadic-templates c++11

7
推荐指数
3
解决办法
631
查看次数

不能将主题颜色与文本或背景一起使用

我在我的 scss 文件中覆盖 bootstrap theme-colors,如下所示

// set variables
$primary: #8dc3a7;
$light: #b4d6c1;
$starorange: #df711b;

// import functions and variables
@import "../node_modules/bootstrap/scss/functions";
@import "../node_modules/bootstrap/scss/variables";

$custom-theme-colors: (
  "starorange": $starorange,
);

// modify theme colors
$theme-colors: map-merge($theme-colors, $custom-theme-colors);

// bootstrap import
@import "../node_modules/bootstrap/scss/bootstrap";
Run Code Online (Sandbox Code Playgroud)

我可以在按钮中使用starorange颜色,如下所示,并且它正确应用了颜色

<button class="btn btn-md btn-starorange">Send</button>
Run Code Online (Sandbox Code Playgroud)

但是,我无法同一个 HTML 文档中为文本或背景使用相同的颜色,如下所示。

<div class="pb-1 text-starorange">
    <i class="bi bi-star-fill"></i>
    <i class="bi bi-star-fill"></i>
    <i class="bi bi-star-fill"></i>
    <i class="bi bi-star-fill"></i>
    <i class="bi bi-star-fill"></i>
</div>
Run Code Online (Sandbox Code Playgroud)

或者

<section class="bg-starorange">
     .... some html here ... …
Run Code Online (Sandbox Code Playgroud)

css sass bootstrap-5

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

将variadic模板类型转换为void,预期')'之前

在我的代码中,我使用variadic模板函数作为日志记录机制.如果DEBUG定义了宏,则打印一条消息; 如果DEBUG没有定义的,那么它应该打印什么.

我的代码:

#ifdef DEBUG
    inline void LOG_CHAT(){ }

    template<typename First, typename ...Rest>
    void LOG_CHAT(First && first, Rest && ...rest){
        std::cout << std::forward<First>(first);
        LOG_CHAT(std::forward<Rest>(rest)...);
    }

#else

    template<typename ...Rest>
    void LOG_CHAT(Rest && ...rest){ 
        (void)(rest...);
    }

#endif
Run Code Online (Sandbox Code Playgroud)

我会把函数定义留空,但我不想得到"未使用的参数"编译器警告.因此,参数(s)被转换为void以消除编译器警告.但是,施放会导致下面再现的另一个错误.

错误:预期')'在'休息'之前'UNUSED(... rest);

注意:在宏'UNUSED'的定义中#define UNUSED(x)(void)(x)

因此,我的主要目标是通过强制转换void或使用任何其他方法来消除编译器警告.但如果我能把它投入,我会更高兴void.

c++ casting void variadic-templates c++11

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

如何使用Azure上/dev/sdb1下的空磁盘空间?

我在 Windows Azure 上有一个带有 200GB 本地 SSD 的虚拟机。

当我想使用 100GB 时,出现“磁盘报价超出错误”消息。从下表中我可以看到我的主(或根)目录为 30GB(这是 的输出df -Th

那么如何才能使 /dev/sdb1 磁盘空间可供我的主目录使用呢?

Filesystem    Type      Size  Used Avail Use% Mounted on
------------------------------------------------------------
udev           devtmpfs  6.9G     0  6.9G   0% /dev
tmpfs          tmpfs     1.4G  8.6M  1.4G   1% /run
/dev/sda1      ext4       30G  1.6G   28G   6% /
tmpfs          tmpfs     6.9G     0  6.9G   0% /dev/shm
tmpfs          tmpfs     5.0M     0  5.0M   0% /run/lock
tmpfs          tmpfs     6.9G     0  6.9G   0% /sys/fs/cgroup
/dev/sdb1      ext4      197G   60M  187G   1% /mnt
tmpfs          tmpfs     1.4G …
Run Code Online (Sandbox Code Playgroud)

ubuntu azure azure-storage ubuntu-16.04

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

可变宏:无法通过“...”传递非平凡可复制类型的对象

我正在尝试为日志记录机制编写一个宏。我写了一个可变参数宏,但它不适用于std::string. 代码如下所示:

#include <stdio.h>
#include <string>


#define LOG_NOTE(m, ...) printf(m, ##__VA_ARGS__)

int main()
{
    std::string foo = "random string";
    int bar = 5;
    LOG_NOTE("%s %d %s", "Hello World", bar, foo);

    return 0;
}
Run Code Online (Sandbox Code Playgroud)

如果我像下面这样调用宏,我不会得到任何错误。

LOG_NOTE("%s %d %s", "Hello World", bar, "random string");
Run Code Online (Sandbox Code Playgroud)

编译器输出:

在函数“int main()”中:5:49:错误:无法通过“...”11:5 传递非平凡可复制类型“std::string {aka class std::basic_string}”的对象:注意: 在宏 'LOG_NOTE' 的扩展中

c++ macros variadic-macros

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

如何递归地查找max数组元素的索引

我想以递归方式找到数组中最大元素的索引.函数的声明可以是这样的:

int maxIndex(const int *p, int size)
Run Code Online (Sandbox Code Playgroud)

我正在研究递归,我看到了一些例子,比如递归地查找max数组元素.这很简单:

int maxInt( const int * p, int size)   
{

    if(size == 1)
        return *p;

    int max = maxInt(p + 1, size -1 );

    if(max > *p)
        return max;
    else
        return p[0];
}
Run Code Online (Sandbox Code Playgroud)

我问自己,如何找到包含数组最大元素的索引.我甚至不确定它是否有可能.你怎么看?

c c++ arrays recursion

-4
推荐指数
1
解决办法
1907
查看次数