我在iterm2下使用vim.我正在使用NERDCommenter插件,我想使用Ctrl + /来切换注释(尝试从Idea/Eclipse切换到vim).这是我在.vimrc中的映射:
nmap <C-/> <leader>c<Space>
vmap <C-/> <leader>c<Space>
Run Code Online (Sandbox Code Playgroud)
但它似乎没有用.可能是什么原因?
我正在使用C++项目并尝试将其配置为使用合成.在我的项目中,我有一个嵌套的头文件目录结构(实际的嵌套结构更糟糕,这是一个例子).
--libs
|---dir1
|---foo1.h
|---dir2
|---foo2.h
|---foo3.h
|---dir3
|---foo4.h
Run Code Online (Sandbox Code Playgroud)
我使用以下命令将lib文件包含在我的.vimrc文件中:
让g:syntastic_cpp_include_dirs = ['libs /']
我假设这会以递归方式获取所有头文件,但事实并非如此.在代码中,syntastic抱怨错误'找不到这样的文件或目录'.
当我显式更改变量以引用特定目录时:
让g:syntastic_cpp_include_dirs = ['libs/dir2/dir3 /']
有用.
我的问题:
编辑:
我没有在我的.vimrc中提到,以下选项适用于syntastic:
let g:syntastic_check_on_open=1
let g:syntastic_enable_signs=1
let g:syntastic_cpp_include_dirs = ['libs/dir2/dir3', 'libs/dir2 ]
let g:syntastic_cpp_check_header = 1
let g:syntastic_cpp_remove_include_errors = 1
Run Code Online (Sandbox Code Playgroud) #include <iostream>
using namespace std;
int main() {
int rows = 10;
int cols = 9;
int opt[rows][cols] = {0};
for (int i = 0; i < rows; ++i) {
for (int j = 0; j < cols; ++j) {
std::cout << opt[i][j] << " ";
}
std::cout << "\n";
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
输出:
0 32767 1887606704 10943 232234400 32767 1874154647 10943 -1
0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 …Run Code Online (Sandbox Code Playgroud) 我已经实现了一个算法,通过在这个问题中调用第一个算法来检查点是否在2D中的三角形内:如何确定一个点是否在二维三角形内.
这个算法有效,但我认为如果我预处理三角形并使用智能数据结构,我可以使这个效率更高.我使用了大约1000万个三角形.我认为实现这一目标的一种方法是计算三角形的边界矩形并在矩形检查中做一个点,但我觉得通过利用一些数据结构来检查近似的矩形,这种情况可以更快.
这样的数据结构和算法是否存在?
我是C ++新手。我有一个foo.cpp文件,它定义了一个函数,
void sort() {
// details of sort algorithm
}
Run Code Online (Sandbox Code Playgroud)
我没有在相应的头文件中定义它,但是没有编译错误。我注意到这被视为静态方法。是这样吗 我在这里到底做了什么?
编辑:
我注意到在此方法内部,我不能使用它(例如:this-> bar),因此我假设这是一个静态函数。当我想要一个“私有”方法,却忘了在头文件中声明它时,这实际上发生了。实际使用这种功能吗?
我正在从vim运行maven 3并且我部分成功地获得了定义的错误格式.这就是我现在拥有的:
makeprg = mvn compile -q -f pom.xml
errorformat = [ERROR] \%f:[%l%.%c]%m
Maven3构建错误:
:!mvn compile -q -f pom.xml 2>&1| tee /var/folders/qy/qyYtxIV9EECvBoYr30SmkU+++TM/-Tmp-/vemUiQM/6
[debug] execute contextualize
[ERROR] COMPILATION ERROR :
[ERROR] /Users/mackie/source-checkouts/carbon/components/bam2/org.wso2.carbon.bam.clustermonitor.ui/src/main/java/org/wso2/carbon/bam/clustermonitor/ui/ClusterAdminClient.java:[84,9] not a statement
[ERROR] /Users/mackie/source-checkouts/carbon/components/bam2/org.wso2.carbon.bam.clustermonitor.ui/src/main/java/org/wso2/carbon/bam/clustermonitor/ui/ClusterAdminClient.java:[84,10] ';' expected
[ERROR] Failed to execute goal org.apache.maven.plugins:maven-compiler-plugin:2.3.1:compile (default-compile) on project org.wso2.carbon.bam.clustermonitor.ui: Compilation failure: Compilation failure:
[ERROR] /Users/mackie/source-checkouts/carbon/components/bam2/org.wso2.carbon.bam.clustermonitor.ui/src/main/java/org/wso2/carbon/bam/clustermonitor/ui/ClusterAdminClient.java:[84,9] not a statement
[ERROR]
[ERROR] /Users/mackie/source-checkouts/carbon/components/bam2/org.wso2.carbon.bam.clustermonitor.ui/src/main/java/org/wso2/carbon/bam/clustermonitor/ui/ClusterAdminClient.java:[84,10] ';' expected
[ERROR] -> [Help 1]
[ERROR]
[ERROR] To see the full stack trace of the errors, re-run Maven with …Run Code Online (Sandbox Code Playgroud) 我已经注意到多个问题,C++专家要求std :: string/std :: map/etc. 不应该使用'new'关键字创建(C++的新手,如果不明显).
所以,如果我的理解是正确的,这不会在堆上创建它,而是在堆栈上创建它.这意味着当函数超出范围时,对象就会消失,但我相信情况并非如此,我的理解是错误的.
这是因为底层模板在堆上实例化它并使用auto_ptr管理它,这样它就不会导致内存泄漏吗?这是否适用于所有stl类?
另外,后续问题是创建插入地图的对象的方法是什么?它们应该在堆上分配(如果它们在函数范围之外是有价值的)吗?
编辑:
我确实理解堆和堆栈之间的区别以及使用它们的原因(我可能不清楚这一点).
我要求这个的原因是它似乎不自然,只是在堆栈上实例化一个我想要保留的对象.但是,我想这就是语法的样子.
这意味着,当我写作时,我觉得我在堆栈上有东西,
std::map<int,int> mymap;
Run Code Online (Sandbox Code Playgroud)
代替,
std::map<int,int> *mymap = new std::map<int,int>;
Run Code Online (Sandbox Code Playgroud)
我也想知道这对记忆的影响.从现在开始,这个实现本身就清理了内存,它是否类似于Java中的垃圾收集?使用stl对象时是否存在隐含的性能影响?
我正在编写一个简单的函数来根据一组应该命名为cam1_0.bmp,cam1_1.bmp的文件派生出一个新的文件名,然后尝试了这个.
static int suffix = 0;
std::string fPre("cam");
std::ifstream fs;
std::string fName;
do {
fName = fPre;
fName.append(std::to_string(camera)).append("_").append(std::to_string(suffix)).append(".bmp");
fs.open(fName);
} while (fs.good() && ++suffix);
Run Code Online (Sandbox Code Playgroud)
这有效,它让我想知道对于0或1以外的数值,相应布尔值的标准定义行为是什么.通过本实验,我知道包括除0以外的负值的所有值都计算为true.根据标准,只有0被认为是假的吗?
我正在尝试在openCV上检测人员的样本.在图像上运行它(此处可用的原始图像)后,这是我的结果:
我正在使用与openCV捆绑在一起的人员检测示例(稍加修改以避免Visual Studio错误).这是执行的代码:
// opencv-sample.cpp : Defines the entry point for the console application.
//
#include "stdafx.h"
#include "opencv2/imgproc/imgproc.hpp"
#include "opencv2/objdetect/objdetect.hpp"
#include "opencv2/highgui/highgui.hpp"
#include <stdio.h>
#include <string.h>
#include <ctype.h>
using namespace cv;
using namespace std;
// static void help()
// {
// printf(
// "\nDemonstrate the use of the HoG descriptor using\n"
// " HOGDescriptor::hog.setSVMDetector(HOGDescriptor::getDefaultPeopleDetector());\n"
// "Usage:\n"
// "./peopledetect (<image_filename> | <image_list>.txt)\n\n");
// }
int main(int argc, char** argv)
{
Mat img;
FILE* f = 0;
char _filename[1024]; …Run Code Online (Sandbox Code Playgroud) 我创建了一个矩阵 a,并尝试以相反的顺序对其进行索引。这些是我的输出:
>>> a
array([[ 0, 1, 2, 3],
[ 4, 5, 6, 7],
[ 8, 9, 10, 11],
[12, 13, 14, 15],
[16, 17, 18, 19],
[20, 21, 22, 23],
[24, 25, 26, 27],
[28, 29, 30, 31],
[32, 33, 34, 35],
[36, 37, 38, 39],
[40, 41, 42, 43],
[44, 45, 46, 47]])
>>> print a[2:0:-1]
[[ 8 9 10 11]
[ 4 5 6 7]]
Run Code Online (Sandbox Code Playgroud)
正如你所看到的,我没有得到第一排。现在,当我尝试此操作时,我得到一个空箭头输出,因为它将其视为 2 .. n - 1。
>>> print a[2:-1:-1]
[]
Run Code Online (Sandbox Code Playgroud)
我想知道是否有办法使用 numpy …