草庐IT

vector_tostr

全部标签

c# - C# 中是否有 List<T> 的方法,例如在 c++ 中为 vector<T> 调整大小

当我使用resize(intnewsize)时在C++中为vector,这意味着size这个vector设置为newsize并且索引在[0..newsize)范围内运行.如何在C#中为List做同样的事情?更改List特性Capacity仅更改Capacity但离开Count相同,而且索引仍在[0..Count)范围内.请帮帮我。附:想象一下,我有一个vectortmp与tmp.size()==5我不能引用tmp[9],但是当我使用tmp.resize(10)我可以引用tmp[9].在C#中,如果我有Listtmp与tmp.Count==5我不能引用tmp[9](IndexOutOfR

c# - C# 中是否有 List<T> 的方法,例如在 c++ 中为 vector<T> 调整大小

当我使用resize(intnewsize)时在C++中为vector,这意味着size这个vector设置为newsize并且索引在[0..newsize)范围内运行.如何在C#中为List做同样的事情?更改List特性Capacity仅更改Capacity但离开Count相同,而且索引仍在[0..Count)范围内.请帮帮我。附:想象一下,我有一个vectortmp与tmp.size()==5我不能引用tmp[9],但是当我使用tmp.resize(10)我可以引用tmp[9].在C#中,如果我有Listtmp与tmp.Count==5我不能引用tmp[9](IndexOutOfR

c++ - 初始化程序列表不适用于 Visual Studio 2012 中的 vector ?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++11featuresinVisualStudio2012所以我今天通过Wikipedia阅读了C++11初始化列表。并看到C++11支持标准容器的以下语法:std::vectorv={"xyzzy","plugh","abracadabra"};std::vectorv({"xyzzy","plugh","abracadabra"});std::vectorv{"xyzzy","plugh","abracadabra"};当我在VisualStudio2012中尝试以下操作时,我收到编译错误C2552:

c++ - 初始化程序列表不适用于 Visual Studio 2012 中的 vector ?

这个问题在这里已经有了答案:关闭10年前。PossibleDuplicate:C++11featuresinVisualStudio2012所以我今天通过Wikipedia阅读了C++11初始化列表。并看到C++11支持标准容器的以下语法:std::vectorv={"xyzzy","plugh","abracadabra"};std::vectorv({"xyzzy","plugh","abracadabra"});std::vectorv{"xyzzy","plugh","abracadabra"};当我在VisualStudio2012中尝试以下操作时,我收到编译错误C2552:

c++ - 为什么 std::vector 不保留 "double"它的容量,而调整大小呢?

我刚刚发现std::vector::resize即使调整到比当前大小高出一个元素的大小,它的容量也会“翻倍”:std::vectorv(50);v.resize(51);std::cout该程序在GCC和Clang中输出100,在VisualC++中输出75。但是,当我从resize切换时至reserve:std::vectorv(50);v.reserve(51);std::cout三个编译器的输出都是51。我想知道为什么实现对resize使用不同的扩展策略和reserve.这似乎不一致,我希望这里有同样的行为。我只是为我的问题添加一个链接,其中报告了对性能的影响:WhyareC++

c++ - 为什么 std::vector 不保留 "double"它的容量,而调整大小呢?

我刚刚发现std::vector::resize即使调整到比当前大小高出一个元素的大小,它的容量也会“翻倍”:std::vectorv(50);v.resize(51);std::cout该程序在GCC和Clang中输出100,在VisualC++中输出75。但是,当我从resize切换时至reserve:std::vectorv(50);v.reserve(51);std::cout三个编译器的输出都是51。我想知道为什么实现对resize使用不同的扩展策略和reserve.这似乎不一致,我希望这里有同样的行为。我只是为我的问题添加一个链接,其中报告了对性能的影响:WhyareC++

c++ - 如何使 std::vector 的 operator[] 编译在 DEBUG 中而不是在 RELEASE 中进行边界检查

我正在使用VisualStudio2008。我知道std::vector使用at()函数进行边界检查,并且如果您尝试使用运算符[]错误地访问某些内容(超出范围),则会出现未定义的行为。我很好奇是否可以通过边界检查来编译我的程序。这样,operator[]将使用at()函数并在任何超出范围时抛出std::out_of_range。release模式编译时不会对operator[]进行边界检查,因此性能不会降低。我开始考虑这个问题是因为我正在将使用BorlandC++编写的应用程序迁移到VisualStudio,并且在一小部分代码中我有这个(i=0,j=1):v[i][j];//visas

c++ - 如何使 std::vector 的 operator[] 编译在 DEBUG 中而不是在 RELEASE 中进行边界检查

我正在使用VisualStudio2008。我知道std::vector使用at()函数进行边界检查,并且如果您尝试使用运算符[]错误地访问某些内容(超出范围),则会出现未定义的行为。我很好奇是否可以通过边界检查来编译我的程序。这样,operator[]将使用at()函数并在任何超出范围时抛出std::out_of_range。release模式编译时不会对operator[]进行边界检查,因此性能不会降低。我开始考虑这个问题是因为我正在将使用BorlandC++编写的应用程序迁移到VisualStudio,并且在一小部分代码中我有这个(i=0,j=1):v[i][j];//visas

c++ - std::vector 到带有自定义分隔符的字符串

我想复制vector的内容到一长string带有自定义分隔符。到目前为止,我已经尝试过://.hstringgetLabeledPointsString(conststringdelimiter=",");//.cppstringGesture::getLabeledPointsString(conststringdelimiter){vectorx=getLabeledPoints();stringstreams;copy(x.begin(),x.end(),ostream_iterator(s,delimiter));returns.str();}但我明白了nomatchingfu

c++ - std::vector 到带有自定义分隔符的字符串

我想复制vector的内容到一长string带有自定义分隔符。到目前为止,我已经尝试过://.hstringgetLabeledPointsString(conststringdelimiter=",");//.cppstringGesture::getLabeledPointsString(conststringdelimiter){vectorx=getLabeledPoints();stringstreams;copy(x.begin(),x.end(),ostream_iterator(s,delimiter));returns.str();}但我明白了nomatchingfu