C++中类似于Python的append方法的是什么?

3

考虑以下Python代码

li = [1,2,3]
li.append(4)

如果现在调用li,输出将是:
[1,2,3,4]

如果使用C++复制上述代码,那么它应该是什么?

1
在幕后使用的数据结构是什么? - Pete Becker
@PeteBecker 我知道的唯一一件事是,在Python中它被称为列表,我认为它与C++数组非常相似。 - iwbtrs
@Nelver 不,C++ 数组和 Python 列表是不同的 - juanpa.arrivillaga
1
我们想要了解底层数据结构的原因是有一些容器可以做Python代码正在做的事情。在说明数据结构时,请使用数据结构术语,例如链表、哈希表等。通用术语如“Python列表”并不能真正传达幕后发生的情况。 - PaulMcKenzie
恭喜你的问题正确使用了两个语言标签。+1 - user4581301
2个回答

9

我认为C++11的等效代码如下:

 #include <vector>

 int main(int argc, char ** argv)
 {
    std::vector<int> li = {1, 2, 3};
    li.push_back(4);

    return 0;
 }   

这个答案唯一的问题是std::liststd::deque也适用。 - PaulMcKenzie
2
如果我没记错的话,Python 的实现更接近于 std::vector(在底层数据结构和大O性能特征方面)。 - Karl Knechtel

-5
#include <iostream>
#include <string>
 
using namespace std;


int tl[3]={1,2,3};
int tl2[4]={};
class apnddd {        
  public:          
    int* ol;  
    int* nl;  
    int it;      
    apnddd(int* l1, int* l2, int it) { 
      ol = l1;
      int sz = sizeof(l1)/sizeof(l1[0]);
      for(int i=0;i<sz+1;i++) {
          l2[i]=l1[i];
          }
         l2[sz+1]=it;
      nl = l2;
      
      
    }
};

int main()
{
    
  apnddd d1(tl, tl2, 4);
 
  int* tl=d1.nl;

  std::cout <<  d1.nl[3]<<tl[3];
  
}

目前你的回答不够清晰。请编辑并添加更多细节,以帮助其他人理解它如何回答所提出的问题。你可以在帮助中心找到有关如何撰写好答案的更多信息。 - Community
这太复杂了。 - polortiz40

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接