相关疑难解决方法(0)

关于向量增长

曾经阅读过Book:C++ Primer,Third Edition作者:Stanley B. Lippman,JoséeLajoie

到目前为止发现1个错误....在根据第6.3条给出的程序中,一个向量如何生长,这个程序在couts中错过了一个"<"!给出的计划是:

#include <vector>
#include <iostream>

int main(){
vector< int > ivec;
cout < "ivec: size: " < ivec.size()
< " capacity: "  < ivec.capacity() < endl;

for ( int ix = 0; ix < 24; ++ix ) {
ivec.push_back( ix );
cout < "ivec: size: " < ivec.size()
< " capacity: "  < ivec.capacity() < endl;
}    
}
Run Code Online (Sandbox Code Playgroud)

现在我纠正了这个问题.本书后面的内容如下:"在Rogue Wave实现中,ivec定义后的大小和容量均为0.然而,在插入第一个元素时,ivec的容量为256,其大小为1."

但是,在纠正和运行代码时,我得到以下输出:


ivec: size: 0 capacity: 0
ivec[0]=0 ivec: size: 1 capacity: 1
ivec[1]=1 ivec: size: …
Run Code Online (Sandbox Code Playgroud)

c++ visual-c++

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

为什么std :: make_move_iterator适用于vector <string>,但不适用于vector <int>

我原以为这std::make_move_iterator总会移动内容,但似乎没有.

看起来它正在移动元素vector<string>而不是移动元素vector<int>.

请参阅以下代码段:

#include <iostream>
#include <iterator>
#include <string>
#include <vector>

void moveIntVector()
{
  std::cout << __func__ << std::endl;
  std::vector<int> v1;
  for (unsigned i = 0; i < 10; ++i) {
    v1.push_back(i);
  }
  std::vector<int> v2(
    std::make_move_iterator(v1.begin() + 5),
    std::make_move_iterator(v1.end()));
  std::cout << "v1 is: ";
  for (auto i : v1) {
    std::cout << i << " ";
  }
  std::cout << std::endl;

  std::cout << "v2 is: ";
  for (auto i : v2) {
    std::cout …
Run Code Online (Sandbox Code Playgroud)

c++ string vector move-semantics c++11

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

标签 统计

c++ ×2

c++11 ×1

move-semantics ×1

string ×1

vector ×1

visual-c++ ×1