标签: visual-c++

std :: vector :: swap会使迭代器失效吗?

如果我交换两个向量,它们的迭代器是否仍然有效,现在只是指向"其他"容器,或者迭代器是否会失效?

那是,给定:

using namespace std;
vector<int> x(42, 42);
vector<int> y;
vector<int>::iterator a = x.begin(); 
vector<int>::iterator b = x.end();

x.swap(y);

// a and b still valid? Pointing to x or y?
Run Code Online (Sandbox Code Playgroud)

似乎std没有提到这个:

[n3092 - 23.3.6.2]

void swap(vector<T,Allocator>& x);

效果:将*的内容和容量()与x的内容和容量()进行交换.

请注意,因为我在VS 2005上,我也对迭代器调试检查等的影响感兴趣(_SECURE_SCL)

c++ iterator stl visual-c++

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

C++静态成员方法调用类实例

这是一个小测试程序:

#include <iostream>

class Test
{
public:
    static void DoCrash(){ std::cout<< "TEST IT!"<< std::endl; }
};

int main()
{
    Test k;
    k.DoCrash(); // calling a static method like a member method...

    std::system("pause");

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

在VS2008 + SP1(vc9)上编译很好:控制台只显示"TEST IT!".

据我所知,不应该在instanced对象上调用静态成员方法.

  1. 我错了吗?从标准角度来看,这段代码是否正确?
  2. 如果它是正确的,那为什么?我找不到为什么会被允许,或者可能是为了帮助在模板中使用"静态或非"方法?

c++ standards visual-c++

38
推荐指数
2
解决办法
6万
查看次数

在预编译头中放什么?(MSVC)

预编译头文件的最佳候选者是什么?我可以在那里放置STL和Boost标头,即使它们有模板吗?这会减少编译时间吗?另外,减少编译时间的最佳IDE设置是什么?

c++ precompiled-headers visual-c++

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

RegAsm.exe和regsvr32有什么区别?如何使用regsvr32生成tlb文件?

任何机构都可以告诉我regsvr32和RegAsm有什么区别?我的Dll在C#中,那么如何将类导入到c ++中呢?

c# c++ com regasm visual-c++

38
推荐指数
1
解决办法
3万
查看次数

stdafx.h的目的

该文件的目的是stdafx.h什么,预编译头文件的含义是什么?

c++ precompiled-headers stdafx.h visual-c++

38
推荐指数
3
解决办法
2万
查看次数

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

std :: numeric_limits :: max的语法错误

我有类结构定义如下:

#include <limits>

struct heapStatsFilters
{
    heapStatsFilters(size_t minValue_ = 0, size_t maxValue_ = std::numeric_limits<size_t>::max())
    { 
         minMax[0] = minValue_; minMax[1] = maxValue_; 
    }

    size_t minMax[2];
};
Run Code Online (Sandbox Code Playgroud)

问题是我不能使用'std :: numeric_limits :: max()'并且编译器说:

Error 8 error C2059: syntax error : '::'

Error 7 error C2589: '(' : illegal token on right side of '::'

我使用的编译器是Visual C++ 11(2012)

c++ syntax syntax-error visual-c++ numeric-limits

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

如何安装Visual C++ Build工具?

我需要安装Visual C++ Build Tools.当我下载安装程序时,我已经尝试安装它,但它告诉我需要卸载VS 2015!

我该如何解决?为什么Visual C++ Build工具告诉我需要删除当前的VS 2015安装?

install visual-c++ visual-studio-2015

38
推荐指数
4
解决办法
14万
查看次数

如何暂时禁用C/C++中的宏扩展?

出于某种原因,我需要暂时禁用头文件中的某些宏,这#undef MACRONAME将使代码编译,但它将取消现有的宏.

有没有一种方法可以禁用它?

我应该提到你并不真正了解宏的值,而且我正在寻找交叉编译器解决方案(至少应该在GCC和MSVC中工作).

c++ gcc visual-c++ c-preprocessor

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

使用Microsoft Visual C++的两阶段模板实例化到底是什么"打破"?

在SO上阅读问题,评论和答案,我一直听说MSVC没有正确地实现两阶段模板查找/实例化.

据我所知,到目前为止,MSVC++只对模板类和函数进行了基本的语法检查,并没有检查模板中使用的名称是否至少被声明了或者沿着这些行.

它是否正确?我错过了什么?

c++ templates instantiation visual-c++

37
推荐指数
4
解决办法
4828
查看次数