今天,当我得到一段已经使用过数百次的代码时,我很乐意编写代码:
迭代集合(这里是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) 在我的代码中,我使用可变参数模板函数进行日志记录.但是当我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以及如何解决它
我在我的 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) 在我的代码中,我使用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.
我在 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) 我正在尝试为日志记录机制编写一个宏。我写了一个可变参数宏,但它不适用于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' 的扩展中
我想以递归方式找到数组中最大元素的索引.函数的声明可以是这样的:
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)
我问自己,如何找到包含数组最大元素的索引.我甚至不确定它是否有可能.你怎么看?